iOS真机无法获取gcj02坐标
发布于 6 年前 作者 lei15 4646 次浏览 来自 问答

iOS真机无法获取gcj02坐标,开发工具能正常获取,安卓未测

刚才又测试了一下,是不能连续调用两个getLocation方法,比如下面的代码,后一个方法就失败,走fail回调,而把上一个方法删除,下一个方法就正常获取

wx.getLocation({
   type: 'wgs84',
   success: function(res){
       that.setData({loc: res});
   }
});
wx.getLocation({
   type: 'gcj02',
   success: function(res){
       that.setData({loc2: res});
   },
   fail: function(){
       wx.showModal({content: '获取gcj02坐标失败'});
   }
});

我建议修改一下这个方法,去掉type参数,统一返回两个坐标系的值,比如:

success返回参数说明:

参数说明
wgs84-latitudewgs84-纬度,浮点数,范围为-90~90,负数表示南纬
wgs84-longitudewgs84-经度,浮点数,范围为-180~180,负数表示西经
gcj02-latitudegcj02-纬度,浮点数,范围为-90~90,负数表示南纬
gcj02-longitudegcj02-经度,浮点数,范围为-180~180,负数表示西经
speed速度,浮点数,单位m/s
accuracy位置的精确度
3 回复

1、有时候需要同时获得wgs84和gcj02两种坐标,而连续调用两次getLocation,目前iOS真机只有第一次能正常获取。而且gcj02本质上也是先获取wgs84,再换算,所以连续调用两次不划算。

2、网上是有换算代码,但由微信换算更简便,更省代码。

综上,建议getLocation方法取消type参数,统一获取wgs84坐标,为了减少换算,可能并不是每次都需要gcj02,那就再增加一个参数,决定是否转换为gcj02。就是说,如果不需要gcj02,就只返回wgs84坐标,否则返回wgs84和gcj02两种坐标。

取一种坐标就行,其他都有算法可以转换的,网上代码很多

回到顶部