uni app +vue 引用 百度地图API取位置,VUE用百度地图获取当前位置(城市)

uni app +vue 引用 百度地图API取位置,VUE用百度地图获取当前位置(城市)
 
1.在index.html 引入 百度js
<script src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥" type="text/javascript"></script>
 
2.创建js文件,放入以下代码:
 
export default {
    init: function () {
        const AK = "lyFvtNiZ2fH1jWqGIRMAxDwDbMwvXgsv";
        const BMap_URL = 'https://api.map.baidu.com/api?v=2.0&ak=' + AK + '&s=1&callback=onBMapCallback';
        return new Promise((resolve, reject) => {
            // 如果已加载直接返回
            if (typeof BMap !== 'undefined') {
                resolve(BMap);
                return true;
            }
            // 百度地图异步加载回调处理
            window.onBMapCallback = function () {
                resolve(BMap);
            };
            let getCurrentCityName = function () {
                return new Promise(function (resolve, reject) {
                    let myCity = new BMap.LocalCity()
                    myCity.get(function (result) {
                        resolve(result.name)
                    })
                })
            }
            // 插入script脚本
            let scriptNode = document.createElement("script");
            scriptNode.setAttribute("type", "text / javascript");
            scriptNode.setAttribute("src", BMap_URL);
            document.body.appendChild(scriptNode);
        });
    }
}

3.需要用的组件里开始引用和调用
写在方法里,在mounted里调用–下面代码不可少

  mounted() {
    var isWeixn = this.is_weixn();
    if (isWeixn) {
      this.getCity();
    }
  },
  methods: {
    getCity() {
      map.init().then(BMap => {
        const locationCity = new BMap.Geolocation();
        var that = this;
        locationCity.getCurrentPosition(  
   function     getinfo(options){
                let city = options.address.city;    //此处拿到位置相关信息
                that.LocationCity = city;
                console.log(options)
              },
              function (e){
                that.LocationCity = '定位失败';
                console.log('定位失败')
              },
              {provider: 'baidu'}
            )
          })
    },
}