一般来说获取当前位置有两种方式:
1.通过script标签导入
2.通过vue-baidu-map获取到BMap
我们采用第一种方式,因为第二种方式需要导入一个地图组件(如果不想展示地图),并且获取BMap对象是从组件的Ready的回调中获取,速度就很感人了。
废话不多说,上代码。

一、首先在百度api注册获得ak密钥

在这里插入图片描述

二、进行引入

(1)、第一种方式:
    直接在vue中index.html中用script标签引入。

//你的ak密钥需要替换真实的你的ak码
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=uvN6vatvU44OQ0a9yuXdQZxTXODHGuLI"></script>

(2)、第二种方式:

新建js文件,我命名为loadResources,里面创建script

// 这段代码写在js文件里
export function loadBMap(funcName) {
    const script = document.createElement("script");
    script.src = "http://api.map.baidu.com/api?v=2.0&ak=uvN6vatvU44OQ0a9yuXdQZxTXODHGuLI&callback=" + funcName;
    document.body.appendChild(script);
}

三、运用到具体文件中

第二种方式需要在你用到的地方进行引入文件


//根据你文件的真实路径引入
import {loadBMap} from '../loadResources'

created() {
    window.initBaiduMapScript = () =>{
        console.log(BMap);
        this.getlocation();
    }
    loadBMap('initBaiduMapScript');
},
methods:{
    getlocation(){this.$nextTick(function(){
        try{
           const geolocation =new BMap.Geolocation();
           geolocation.getCurrentPosition(function(r){
              console.log(r,"aaaa");
              if(this.getStatus() == BMAP_STATUS_SUCCESS){
                 const{lat =null, lng=null} = r.point;
              }
           });
        }catch(e){
           console.log(e)
        }
      })
   }
}

因为我们不需要地图效果,因此只需要获取到经纬度就好,这边执行完就已经可以获取到经纬度了。在控制台区域可以看到我们打印出来的console.log(r,“aaaa”);证明已经获取成功。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐