plus.geolocagetCurrentPosition() 云端打包后安卓获取不到address

问题描述

使用plus.geolocation.getCurrentPosition()这个方法获取定位信息,在iPhone上没有任何问题,在安卓上真机调试也没有问题,但是云端打包后再安卓上获取不到address信息。
原创文章,欢迎转载.转载请注明出处: https://www.jianshu.com/p/d9ee48dd323f
实现代码如下:

//获取位置信息
plus.geolocation.getCurrentPosition(function(p){
    mui.toast(JSON.stringify(p));
    if (!p || !p.address) {
        return;
    }
    //经纬度
    console.log('Geolocation\nLatitude:' + p.coords.latitude + '\nLongitude:' + p.coords.longitude + '\nAltitude:' + p.coords.altitude);
   //JSON对象,地址信息
    console.log(JSON.stringify(p.address));
}, function(e){
        console.log('Geolocation error: ' + e.message);
    if (isShowToast) {
        mui.toast("定位出错:"+e.message);
    }
});

mui.toast(JSON.stringify(p))展示的信息如下:


没有address

解决方法

云端打包后默认按以下优先顺序使用定位(高德定位>百度定位>系统定位),由于没有集成高德和百度定位,所以使用的是系统定位。集成了百度定位就可以了:
依然使用上面的方法,只不过给plus.geolocation.getCurrentPosition()多加一个参数{provider:'baidu'},具体代码如下:

//使用百度地图地位模块获取位置信息
plus.geolocation.getCurrentPosition(function(p){
    mui.toast(JSON.stringify(p));
    if (!p || !p.address) {
        return;
    }
    //经纬度
    console.log('Geolocation\nLatitude:' + p.coords.latitude + '\nLongitude:' + p.coords.longitude + '\nAltitude:' + p.coords.altitude);
   //JSON对象,地址信息
    console.log(JSON.stringify(p.address));
}, function(e){
        console.log('Geolocation error: ' + e.message);
    if (isShowToast) {
        mui.toast("定位出错:"+e.message);
    }
}, {provider:'baidu'});

然后点击manifest.json文件,选SDK配置,配好对应appkey就好了,appkey的话去百度地图开放平台申请。
注意:申请Android端appkey时需要填写【发布版SHA1】,如果使用Hbuilder官方提供的Google账号打包,这里就默认填写官方提供的SHA1:BA:AD:09:3A:82:82:9F:B4:32:A7:B2:8C:B4:CC:F0:E9:F3:7D:AE:58

你可能感兴趣的:(plus.geolocagetCurrentPosition() 云端打包后安卓获取不到address)