Vue uses openlayers to load Tiandi Map and Amap

Vue uses openlayers to load Tiandi Map and Amap

1. World Map

1. Install openlayers in vue

 npm i --save ol

The vue mentioned here is built based on scaffolding. Create a new page, that is, the vue file, and configure the routing. Then I can directly put in my code and run it.

 Vue uses openlayers to load Tiandi Map and Amap <template>
  <div class="wrapper">
    <div>Map of the world</div>
    <div class="map" id="olMap"></div>
  </div>
</template>
<script>
import "ol/ol.css";
import {
  Tile as TileLayer } from "ol/layer";
import XYZ from "ol/source/XYZ";
import {
  defaults as defaultControls } from "ol/control";
import Map from "ol/Map.js";
import View from "ol/View.js";
export default {
  data() {
   return {
      map: null,
      parser: null,
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
     const map = new Map({
       target: "olMap",
        view: new View({
 
          center: [0, 0], //Center point latitude and longitude zoom: 4, //Layer scaling projection: "EPSG:4326",
        }),
        controls: defaultControls({
          zoom: true,
          attribution: false,
          rotate: false,
        }),
      });
      this.map = map;
      // Add map let url = "http://t{0-7}.tianditu.com/DataServer?x={x}&y={y}&l={z}";
      url = `${
   url}&T=vec_c&tk=replace your key`;
      const source = new XYZ({
     url: url,
        projection: "EPSG:4326",
      });
      const tdtLayer = new TileLayer({
        source: source,
      });
      this.map.addLayer(tdtLayer);
      // Add annotation url = "http://t{0-7}.tianditu.com/DataServer?x={x}&y={y}&l={z}";
      url = `${
   url}&T=cva_c&tk=replace your key`;
      const sourceCVA = new XYZ({
        url: url,
        projection: "EPSG:4326",
      });
      const tdtcvaLayer = new TileLayer({
        source: sourceCVA,
      });
      this.map.addLayer(tdtcvaLayer);
    },
  },
};
</script>
<style scoped>
.map {
  width: 100%;
  height: 100vh;
}
</style>

The world map will be displayed.

Effect picture:

2. Amap

Compared with Tiandi Map, Amap is much easier. Just go to the code

 <template>
  <div class="wrapper">
    <div>Amap</div>
    <div id="map"></div>
  </div>
</template>
<script>
import {
 Map,View,Feature} from 'ol'

import * as olProj from 'ol/proj'
import {
 Point} from 'ol/geom'
import {
  Style, Fill, Stroke, Circle as sCircle } from "ol/style";
// Add layer import Tilelayer from 'ol/layer/Tile'
import {
 Vector as VectorLayer} from 'ol/layer'
import {
 XYZ,Vector as VectorSource} from 'ol/source'
//Import style file import "ol/ol.css"
export default {
  data() {
  return {
    map:null
    }
  },
  mounted() {
  this.init();
   this.setMarker();
  },
  methods: {
    init(){
       this.map = new Map({
         target:'map',
         layers:[new Tilelayer({
           source: new XYZ({
               url:'https://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',
           })
         })
         ],
        view:new View({

            // Take Xi'an as the center of the map // The olProj.fromLonLat method converts longitude and latitude into corresponding coordinates center: olProj.fromLonLat([108.945951, 34.465262]),
          zoom:2
        }),
       })
    },
    setMarker(){
        let _style = new Style({
            image:new sCircle({
                radius:10,
                stroke:new Stroke({
                    color:"#fff",
                }),
                fill: new Fill({
                    color:'#3399CC',
                }),
            }),
        });
        let _feature = new Feature({
 
            geometry:new Point(olProj.fromLonLat([108.945951, 34.465262])),
        });
        _feature.setStyle(_style);
        let _marker = new VectorLayer({

            source: new VectorSource({
               feature:[_feature],
            }),
        });
        this.map.addLayer(_marker);
    },
  },
}
</script>
<style scoped>
  #map{
      /* Screen width and height */
    width: 100vw;
    height: 100vh;
  }
</style>

This is the end of this article about how Vue uses openlayers to load Tiandi Map and Amap. For more relevant content about openlayers loading Tiandi Map and Amap, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Vue uses Tiandi Map and openlayers to achieve multiple base map overlay display effects
  • vue-openlayers realizes the map coordinates pop-up box effect
  • Vue calls Gaode map example code
  • How to introduce Amap and its UI components into vue project
  • Vue Baidu Map + Detailed Explanation of Positioning
  • Vue Echarts implements a visual world map code example
  • Detailed explanation of how to call Baidu Map API in Vue project
  • Solve the problem of Vue dynamically loading local images
  • Two ways to configure Amap in Vue-Cli 3.0
  • Vue uses openlayers to create a map

<<:  Implementation of forced line breaks and non-line breaks in div, td, p and other containers in HTML

>>:  How to write the introduction content of the About page of the website

Recommend

Brief analysis of the MySQL character set causing database recovery errors

Importing data with incorrect MySQL character set...

wget downloads the entire website (whole subdirectory) or a specific directory

Use wget command to download the entire subdirect...

Six border transition effects implemented by CSS3

Six effectsImplementation Code html <h1>CSS...

Explanation of the problem of selecting MySQL storage time type

The datetime type is usually used to store time i...

Practical record of optimizing MySQL tables with tens of millions of data

Preface Let me explain here first. Many people on...

How to run MySQL using docker-compose

Directory Structure . │ .env │ docker-compose.yml...

CSS -webkit-box-orient: vertical property lost after compilation

1. Cause The requirement is to display two lines,...

A brief introduction to MySQL InnoDB ReplicaSet

Table of contents 01 Introduction to InnoDB Repli...

5 VueUse libraries that can speed up development (summary)

Table of contents What utilities does VueUse have...

Use docker to deploy tomcat and connect to skywalking

Table of contents 1. Overview 2. Use docker to de...

How to remotely connect to the cloud server database using Navicat

It is very convenient to connect to a remote serv...

Use of Linux crontab command

1. Command Introduction The contab (cron table) c...

Use of MySQL official export tool mysqlpump

Table of contents Introduction Instructions Actua...

Does the % in the newly created MySQL user include localhost?

Normal explanation % means any client can connect...