3***@qq.com
3***@qq.com
  • 发布:2017-10-13 16:37
  • 更新:2017-12-01 14:45
  • 阅读:1756

IOS定位问题

分类:HTML5+

使用plus.geolocation.getCurrentPosition方法时,其中有一个参数是PositionOptions,我给了
{
provider: "baidu", //百度地图模块
coordsType: "bd09ll", //百度坐标系
enableHighAccuracy: true //精确定位,需要消耗较多资源,可选
}

> 在安卓访问时,没有问题,日志如下:
{"coordsType":"bd09ll","address":{"country":"中国","province":"广东省","city":"广州市","district":"海珠区","street":"新港东路","streetNum":"1070号","cityCode":"257"},"addresses":"中国广东省广州市海珠区xxxxxxx","coords":{"latitude":23.103122,"longitude":113.376618,"accuracy":250,"altitude":5e-324,"heading":null,"speed":0,"altitudeAccuracy":0},"timestamp":1507883471000}

> 同一个方法,IOS访问时,日志如下:
{"coordsType":"wgs84","address":{"district":"海珠区","country":"中国","province":"广东省","city":"广州市","street":"会展南四路"},"addresses":"会展南四路","coords":{"latitude":23.09896153736814,"longitude":113.3633326627496,"accuracy":65,"altitude":25.4465217590332,"heading":null,"speed":null,"altitudeAccuracy":10},"timestamp":1507883577342.862}

==这样看来,IOS调用getCurrentPosition方法时,没有提交后面的参数,导致使用了WGS84默认的坐标系,出来的坐标有偏差。

我在minifest.json里面,已经配置了相应权限,不过用的时浏览器端的ak,安卓上没有问题,IOS上出现问题,请问下这个怎么解决呢? 感谢。

2017-10-13 16:37 负责人:无 分享
已邀请:
wen如故i

wen如故i

ios就是 获取的 wgs84 坐标的,很久以前就是,没毛病啊,自己手动转一下,你需要的百度坐标吧。要么坐等 官方 更新。

  • 3***@qq.com (作者)

    也就是plus这个方法,不支持IOS用百度坐标系里获取是吗?带自己手动转换下。

    2017-10-13 16:56

  • wen如故i

    恩,是的,已经有人提过很多这个问题了,我也提过,最近官方 确认bug,说是在修复,但是不知道什么时候好。

    2017-10-13 16:58

  • 3***@qq.com (作者)

    我看百度API,使用的原生语法去转换的,我是混合开发的,有什么好的转换坐标的方法解决吗?我决定分开处理下。

    2017-10-13 17:05

  • wen如故i

    就判断获取的 坐标 类型就好了。至于用什么方法转,都是会有偏差的,难免

    2017-10-13 18:45

小白啊

小白啊

if(plus.os.name == 'iOS') {//高德地图,IOS需要坐标转换
plus.geolocation.getCurrentPosition(function(p){
var lng = p.coords.longitude;
var lat = p.coords.latitude;
var gcjloc = transformFromWGSToGCJ(lng,lat);//高德地图,IOS需要坐标转换
lng = gcjloc.lng;
lat = gcjloc.lat;
}, function(e){
mui.toast("获取定位位置信息失败");//定位异常
},{provider:'system'});//优先使用系统定位
}else{//android
plus.geolocation.getCurrentPosition(translatePoint, function(e) {
mui.toast("获取定位位置信息失败");//定位异常
}, { geocode: true, provider: 'amap' });//优先使用高德定位
function translatePoint(position){
var longitude = position.coords.longitude;
var latitude = position.coords.latitude;
}
}

该问题目前已经被锁定, 无法添加新回复