Vue+OpenLayers 创建地图并显示鼠标所在经纬度

1、效果

2、创建地图

本文用的是高德地图

页面

dart 复制代码
 <div class="map" id="map"></div>
                    <div id="mouse-position" class="position_coordinate"></div>

初始化地图

go 复制代码
     var gaodeLayer = new TileLayer({
          title: "高德地图",
          source: new XYZ({
            url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',
            wrapX: false
          })
        });
        this.map = new Map({
          layers: [gaodeLayer],
          target: 'map',
          view: new View({
            center: transform([123.23, 25.73], 'EPSG:4326', 'EPSG:3857'), //地图初始中心点
            projection: 'EPSG:3857',
            zoom: 4,
            minZoom: 1

          }),
        });

3、添加经纬度

go 复制代码
   var mousePositionControl = new MousePosition({
          coordinateFormat: function (coordinate) {
            return formatAxirs(coordinate, '经度:{x} 纬度:{y}', 2);
          },
          projection: 'EPSG:4326',
          className: "custom-mouse-position",
          target: document.getElementById("mouse-position"), //将位置数据放到那里
          undefinedHTML: "",
        });
        this.map.addControl(mousePositionControl);

4、完整代码

javascript 复制代码
<script>
import { Map, View } from "ol";

    import TileLayer from 'ol/layer/Tile.js';

  import XYZ from 'ol/source/XYZ.js';
  import { get as getProjection, transform } from 'ol/proj.js';
    import MousePosition from "ol/control/MousePosition";
   import { format as formatAxirs } from 'ol/coordinate';
  export default {
    data() {
  return {
         map: null,
        draw: null,
      };
    },
    mounted() {
      this.initMap();

    },
      methods: {
     //初始化地图
      initMap() {
        var gaodeMapLayer = new TileLayer({
          title: "高德地图",
          source: new XYZ({
            url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',
            wrapX: false
          })
        });
        this.map = new Map({
          layers: [gaodeMapLayer],
          target: 'map',
          view: new View({
            center: transform([103.23, 35.33], 'EPSG:4326', 'EPSG:3857'), //地图初始中心点
            projection: 'EPSG:3857',
            zoom: 4,
            minZoom: 1

          }),
        });

        // 获取鼠标在地图的经纬度
        var mousePositionControl = new MousePosition({
          coordinateFormat: function (coordinate) {
            return formatAxirs(coordinate, '经度:{x} 纬度:{y}', 2);
          },
          projection: 'EPSG:4326',
          className: "custom-mouse-position",
          target: document.getElementById("mouse-position"), //将位置数据放到那里
          undefinedHTML: "",
        });
        this.map.addControl(mousePositionControl);
      },
}
}

附css代码

css 复制代码
  .position_coordinate {
    color: #6a6a6a;
    position: absolute;
    font-size: 14px;
    bottom: 20px;
    right: 20px;
    z-index: 999;
    text-align: center;
    line-height: 30px;
  }
相关推荐
菜狗的小小笔记_30 分钟前
Vue3 实用技巧
vue.js
勇敢di牛牛4 小时前
vue3 + mars3D 三分钟画一个地球
前端·vue.js
我是日安6 小时前
从零到一打造 Vue3 响应式系统 Day 27 - toRef、toRefs、ProxyRef、unref
前端·javascript·vue.js
Q_Q19632884756 小时前
python+vue的在线租房 房屋租赁系统
开发语言·vue.js·spring boot·python·django·flask·node.js
不如喫茶去6 小时前
VUE查询-历史记录功能
前端·javascript·vue.js
武天6 小时前
说说你对slot的理解?slot使用场景有哪些?
vue.js
武天7 小时前
vue中,key的原理
vue.js
武天7 小时前
如何打破scope对样式隔离的限制?
vue.js
武天7 小时前
Vue中的$nextTick有什么作用?
vue.js
武天7 小时前
刷新浏览器后,Vuex的数据是否存在?如何解决?
vue.js