Vue和腾讯地图之相遇

Vue和腾讯地图之相遇

掘金地址:https://juejin.im/post/5d5e2ab3f265da03a9503cba
一、前期准备
    第一步:申请腾讯地图key
    
    第二步:安装qqmap依赖:npm install qqmap --save
    
    第三步:在index.html中引入JS文件
    <script type="text/javascript" src="http://map.qq.com/api/js?v=2.exp&key=自己申请的key"></script>
    <script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
二、结合项目说一下使用方法
注:项目中主要用到
    1、获取定位
    2、附近地址
    3、腾讯地图的选点组件
    4、位置展示组件
  1. 在mixins目录下新建一个TMap.js文件(异步加载所需js)
    import maps from 'qqmap';

    export function TMap() {
      let that = this;
      return new Promise(resolve => {
        maps.init(that.$mapKey, () => {
          resolve(maps);
        });
      });
    }
  1. 在main.js中引入该文件,并抛出作为全局对象使用
    import { TMap } from './mixins/TMap';
    Vue.prototype.$TMap = TMap;
    // 这样在页面中就可以用this.$TMap了
  1. 接下来就是正式使用腾讯地图了(主要应用场景如下)
    A、登录时获取Map对象,并存入vuex
    
    // 由于项目是嵌入在其他APP里面的,实际就是H5页面而已,用户无法刷新页面,所以不用担心Map对象会因为页面刷新而丢失
    async setMap() {
      const map = await this.$TMap();
      this.$store.commit('setTxMap', map);
      // QQMap是一个全局js文件中定义的
      this.QQMap = this.$store.state.txMap;
    }
    
    B、主要方法
    
     /**
     * 获取当前经纬度
     * @returns {Promise<any>}
     */
     getCurrentPoint() {
        this.QQMap = this.$store.state.txMap;
        let geolocation = new this.QQMap.maps.Geolocation(this.$mapKey, 'myMap');
        let options = {timeout: 15000};
        return new Promise((resolve, reject) => {
            geolocation.getLocation(position => {
              resolve(position);
            }, err => {
              reject(err);
            }, options);
        });
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值