uni-app iOS 调用map地图getUserLocation方法获取point,首次能获取point,之后调用point值不再改变
uni-app iOS 调用map地图getUserLocation方法获取point,首次能获取point,之后调用point值不再改变
操作步骤:
h5+页面,介面使用地图控件,
页面plusReady时执行map = new plus.maps.Map("idMap");
刷新按钮执行以下地图定位方法获取坐标point
map.getUserLocation(function(state, point) {
if (0 == state) {
mui.alert(JSON.stringify(point));
}
}
Android和iOS 执行一次,然后移动位置再执行以上方法
iOS执行第一次能获取point,之后再调用point的值就不会改变
试过要这样才能正常
map.close();
map = new plus.maps.Map("idMap");
map.getUserLocation(function(state, point) {
}
预期结果:
应该可以正确获取坐标point
实际结果:
Android 每次能正确获取坐标point;
iOS执行第一次能获取point,之后再调用point的值就不会改变
测试过要每次刷新前先close重新创建地图对象才能正常获取point值
map.close();
map = new plus.maps.Map("idMap");
map.getUserLocation(function(state, point) {
}
bug描述:
iOS 调用map地图getUserLocation方法获取point,第一次能获取point,之后再调用point的值就不会改变
| 信息类型 | 信息内容 |
|---|---|
| 产品分类 | HTML5+ |
| 版本号 | 3.2.9 |
| 手机系统 | iOS |
| 系统版本号 | IOS 14 |
| 手机厂商 | 苹果 |
| 手机机型 | 12 |
| 打包方式 | 云端 |
更多关于uni-app iOS 调用map地图getUserLocation方法获取point,首次能获取point,之后调用point值不再改变的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app iOS 调用map地图getUserLocation方法获取point,首次能获取point,之后调用point值不再改变的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个iOS平台上的已知问题,与HTML5+地图组件的缓存机制有关。iOS系统在首次调用getUserLocation()时会获取实时位置,但后续调用可能返回缓存的定位结果,而不是重新获取最新位置。
解决方案:
-
强制刷新定位(推荐): 在调用
getUserLocation()前,先调用map.setCenter()设置一个无效坐标,触发定位刷新:// 先设置一个无效中心点强制刷新 map.setCenter(new plus.maps.Point(0, 0)); map.getUserLocation(function(state, point) { if (0 == state) { mui.alert(JSON.stringify(point)); } }); -
使用原生定位API: 如果只需要获取位置而不需要地图显示,建议使用
plus.geolocation:plus.geolocation.getCurrentPosition(function(pos) { var point = new plus.maps.Point(pos.coords.longitude, pos.coords.latitude); mui.alert(JSON.stringify(point)); }, function(e) { console.log("定位失败:" + e.message); }, { enableHighAccuracy: true, timeout: 10000 });

