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-latitude | wgs84-纬度,浮点数,范围为-90~90,负数表示南纬 |
wgs84-longitude | wgs84-经度,浮点数,范围为-180~180,负数表示西经 |
gcj02-latitude | gcj02-纬度,浮点数,范围为-90~90,负数表示南纬 |
gcj02-longitude | gcj02-经度,浮点数,范围为-180~180,负数表示西经 |
speed | 速度,浮点数,单位m/s |
accuracy | 位置的精确度 |
望回复
1、有时候需要同时获得wgs84和gcj02两种坐标,而连续调用两次getLocation,目前iOS真机只有第一次能正常获取。而且gcj02本质上也是先获取wgs84,再换算,所以连续调用两次不划算。
2、网上是有换算代码,但由微信换算更简便,更省代码。
综上,建议getLocation方法取消type参数,统一获取wgs84坐标,为了减少换算,可能并不是每次都需要gcj02,那就再增加一个参数,决定是否转换为gcj02。就是说,如果不需要gcj02,就只返回wgs84坐标,否则返回wgs84和gcj02两种坐标。
取一种坐标就行,其他都有算法可以转换的,网上代码很多