问题描述
使用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))展示的信息如下:
解决方法
云端打包后默认按以下优先顺序使用定位(高德定位>百度定位>系统定位),由于没有集成高德和百度定位,所以使用的是系统定位。集成了百度定位就可以了:
依然使用上面的方法,只不过给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