南宫萧尘
南宫萧尘
  • 发布:2017-03-02 09:55
  • 更新:2017-03-02 11:37
  • 阅读:5205

【已解决】高德地图定位bug

分类:HTML5+

详细问题描述
[内容] 使用高德地图SDK定位的时候,发现IOS端和Android端定位的时候,定位的经纬度不一致,根据实际情况对比,发现Android端的定位正常,IOS端的偏离大概几百米.个人猜测应该是IOS端的纠偏方法有误.最后,经过我的排查,发现,我把IOS端返回的经纬度,通过谷歌地球,发现定位是对的.也就是说,IOS端返回的经纬度,是system的经纬度,并不是amap的经纬度,请开发人员尽快修复.

重现步骤
[步骤]
[结果]
[期望]

运行环境
[系统版本]IOS 10.2
[浏览器版本]
[IDE版本]8.0.1
[mui版本]位置

附件
[代码片段]
[安装包]

联系方式
[QQ]
[电话]

2017-03-02 09:55 负责人:无 分享
已邀请:
南宫萧尘

南宫萧尘 (作者)

经过与客服人员"DCloud_客服_果汁"的沟通得知,目前暂不支持IOS的高德地图定位,目前IOS获取到的坐标为:wgs84坐标.如需继续使用高德地图,建议判断当前客户端是否为IOS,然后进行坐标转换.在这里,谢谢果汁的帮忙.另外,我提供一下wgs84转gcl02坐标的方法:https://github.com/hiwanz/wgs2mars.js

南宫萧尘

南宫萧尘 (作者)

可以通过下面的代码来判断是否为IOS

            //监听位置  
            var watchId;  

            function fWatchPos() {  
                if(watchId) {  
                    return;  
                }  
                watchId = plus.geolocation.watchPosition(function(p) {  
                    var codns = p.coords; //获取地理坐标信息;  
                    var lat = codns.latitude; //获取到当前位置的纬度;  
                    var lng = codns.longitude; //获取到当前位置的经度;  
                    if(plus.os.name == 'iOS') {//高德地图,IOS需要坐标转换  
                        var gcjloc = transformFromWGSToGCJ(lng, lat);  
                        VPoi = new AMap.LngLat(gcjloc.lng, gcjloc.lat);  
                    } else {  
                        VPoi = new AMap.LngLat(lng, lat);  
                    }  
                    VUserMarker.setPosition(VPoi); //移动   
                    map.setCenter(VPoi);  
                }, function(e) {  
                    //                      mui.toast("监听位置变化信息失败:" + e.message);  
                }, {  
                    geocode: true,  
                    provider: 'amap', //amap是高德  
                    timeout: 3000  
                });  
            };
南宫萧尘

南宫萧尘 (作者)

我个人是在华强云谷工作,安卓目前是定位正常的,返回的是高德地图纠偏过的经纬度,可以从图一看出.图二是ios端的,定位偏离了.后来把我ios端返回的经纬度,在谷歌地球上输入,发现定位是正确的,也就是说,ios端返回的经纬度是system的经纬度,而不是amap的,麻烦开发人员,尽快解决,谢谢,辛苦了.

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