uniapp 中APP端调用uni.getLocation偶尔获取不到address解决方法

您所在的位置:网站首页 阿迪达斯app添加不了地址信息 uniapp 中APP端调用uni.getLocation偶尔获取不到address解决方法

uniapp 中APP端调用uni.getLocation偶尔获取不到address解决方法

2024-07-12 13:31| 来源: 网络整理| 查看: 265

uniapp 中APP端调用uni.getLocation偶尔获取不到address解决方法 1.配置geocode为true uni.getLocation({ type: 'wgs84', geocode:true,//设置该参数为true可直接获取经纬度及城市信息 success: function (res) { console.log('获取定位信息',res); }, fail: function (err) { console.log("获取定位失败",err); uni.showToast({ title: '获取定位失败', icon:'none' }); } });

一般情况下,此时可以获取从res.address中获取地址信息,详情

[参考文档]: https://uniapp.dcloud.io/api/location/location?id=getlocation

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lOJEIdlK-1640680878054)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211228161204165.png)]

2.特殊情况:即使配置geocode为true,依然获取不到address信息

此时未报错,只能获取到经纬度信息,返回信息如下:

{ "type": "wgs84", "altitude": 0, "latitude": 34.806316, "longitude": 113.685944, "speed": 0, "accuracy": 40, "errMsg": "getLocation:ok" }

如果出现这种情况,可以使用plus.maps.Map.reverseGeocode方法获取address信息:

[参考文档]: https://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.Map.reverseGeocode

// #ifdef APP uni.getLocation({ type: 'wgs84', geocode:true,//设置该参数为true可直接获取经纬度及城市信息 success: function (res) { console.log('获取定位信息',res); // 创建地图坐标对象 var point = new plus.maps.Point(res.longitude, res.latitude); //静态方法,反向地理编码 plus.maps.Map.reverseGeocode(point, {},(event)=>{ var address = event.address; // 转换后的地理位置 var point = event.coord; // 转换后的坐标信息 var coordType = event.coordType; // 转换后的坐标系类型 var reg = /.+?(省|市|自治区|自治州|县|区)/g; var addressList = address.match(reg).toString().split(","); //注意 因为存在直辖市, 当所在地区为普通省市时,addressList.length == 3,city = addressList[1];当所在地区为直辖市时addressList.length == 2,city = addressList[0]; let city = addressList.length == 3?addressList[1]:addressList[0]; console.log("addressList",addressList); }, function(e) { console.log("失败回调",e); } ); }, fail: function (err) { console.log("获取定位失败",err); uni.showToast({ title: '获取定位失败', icon:'none' }); } }); // #endif

//注意 因为存在直辖市, 当所在地区为普通省市时,addressList.length == 3,city = addressList[1];当所在地区为直辖市时addressList.length == 2,city = addressList[0]; 获取到的信息在addressList里边,如下:

普通省市:["河南省", "郑州市", "金水区"] 直辖市:["上海市", "浦东新区"]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3