vue里使用腾讯地图

Posted glant

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue里使用腾讯地图相关的知识,希望对你有一定的参考价值。

主要需求是:
1.通过搜索地址获取坐标经纬度,
2.通过点击地图上的位置获取地址同时获取坐标经纬度
使用了地址解析和反地址解析

npm安装腾讯地图
腾讯官方并没有在npm上发布腾讯地图插件,所以找到一个别人写的,可以直接调用腾讯地图javascript方法
链接:https://www.npmjs.com/package/qqmap

npm install qqmap --save

在组件中引入

import maps from "qqmap"

 

地图 DOM 元素
<div class="map">
       <el-input v-model="addressKeyword" placeholder="请输入地址来直接查找相关位置" clearable style="margin-bottom:20px">
            <el-button slot="append" icon="el-icon-search" @click="getAddressKeyword"></el-button>
        </el-input>
        <div id="container" style="width:100%; height:300px"></div>
  </div>
 

  

data:{
   //腾讯地图
      map: null,
      getAddress: null,
      getAddCode: null,
   addressKeyword: ""
}

 

由于在使用的把地图DOM放在了可显示隐藏的盒子里,导致了地图不显示的问题,(showModal是一个控制显示隐藏的变量;newValue是watch监听的新值)

故:

  watch: {
  showModal: function(newValue) { if (newValue) { this.init(); } } },

  初始化地图

 methods: {
    //初始化地图
    init() {
      var that = this;
      maps.init("W3YBZ-NW734-APUUL-XQTC4-76L2T-NCF70", () => {
        var myLatlng = new qq.maps.LatLng(22.547931568083015, 114.1306221485138);
        var myOptions = {
          zoom: 16,
          center: myLatlng,
          mapTypeId: qq.maps.MapTypeId.ROADMAP
        };
        that.map = new qq.maps.Map(
          document.getElementById("container"),
          myOptions
        );
        //获取点击后的地址
        qq.maps.event.addListener(that.map, "click", function(event) {
          // 获取点击后的地图坐标
          that.shopInfo.lng = event.latLng.getLng();
          that.shopInfo.lat = event.latLng.getLat();
          that.getAddressCode();
        });

        //调用地址显示地图位置并设置地址
        that.getAddress = new qq.maps.Geocoder({
          complete: function(result) {
            that.map.setCenter(result.detail.location);
            console.log(result.detail.location)
            that.shopInfo.lng = result.detail.location.lng;
            that.shopInfo.lat = result.detail.location.lat;
            var marker = new qq.maps.Marker({
              map: that.map,
              position: result.detail.location
            });
          }
        });
        //通过坐标来显示地图地址
        that.getAddCode = new qq.maps.Geocoder({
          complete: function(result) {
            that.addressKeyword = result.detail.address;
          }
        });
      });
    },

  

   //通过地址获得位置
    getAddressKeyword() {
      //通过getLocation();方法获取位置信息值
      this.getAddress.getLocation(this.addressKeyword);调用自带的接口
    },
    // 通过坐标获得地址
    getAddressCode() {
      var lat = parseFloat(this.shopInfo.lat);
      var lng = parseFloat(this.shopInfo.lng);
      var latLng = new qq.maps.LatLng(lat, lng);
      //调用获取位置方法
      this.getAddCode.getAddress(latLng);
    },
  

  

以上是关于vue里使用腾讯地图的主要内容,如果未能解决你的问题,请参考以下文章

vue腾讯地图标记高亮

vue 使用 腾讯地图api

vue+腾讯地图 实现坐标拾取器功能

h5 vuejs 使用腾讯地图,稍微点快点或者操作多点页面会卡死,地图花屏,有遇到过的吗

vue - 结合腾讯地图时绑定监听要使用箭头函数不然无法绑定

vue 腾讯云点播播放视频(单视频)