Android使用百度地图定位SDK在wifi下位置偏差

前段时间公司上马了一个Android项目,其中用到了百度地图的定位SDK(V 3.1),上线后有用户反馈来说定位的位置不准确(我们展示给用户的地址是具体的街道地址,原来是直接使用的百度地图 SDK,需要先获得坐标,然后调用相关接口反解到地址,现在有了单独的定位SDK就很方便,只需设置 LocationClientOption.setAddrType("all")  就可以一并返回地址信息),于是找了两部手机进行了一下测试(均是通过wifi接入网络,并且手机里面没有sim卡),结果发现确实和自己所在的位置有较大的出入(大概有2km左右的误差),本来以为是程序的问题,但奇怪的是使用Android 百度地图官方App居然也是定位到那个有偏差的位置,真是蛋疼。

后来无意中拿了同事的一部手机拿来测试,发现在这部手机上,我们的应用和百度地图的定位居然都是准确的(在合理的误差范围内),通过反复对比,发现唯一的区别就是这部手机里面是有sim卡的,所以就考虑到可能是基站定位的结果取代了wifi定位(因为我们公司是在大楼内,所以GPS定位起不了作用,如果GPS可用的话也不会出现这种定位偏差的问题,因为GPS的定位优先级最高),于是将这部手机中的sim卡取出,只是采用wifi定位,果然发现定位结果和其它两部一样的,都是定位到了那个有偏差的问题, 由此确定了问题的根源。

于是在程序里面进行了如下处理:对于通过wifi定位的用户提示可能会出现定位的偏差。

这里还有一点需要说明:并不是所有通过wifi接入的设备都存在定位偏差较大的问题,像苹果的IPod touch,本身是没有GPS模块的,只能通过wifi定位,但结果还是很准确的,这应该与wifi热点位置数据库有关(有可能是苹果自定通过匿名收集用户位置信息获取到的数据,所以比较精确,但百度可能就会有偏差),相关问题可以参考一下wifi的定位原理



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,可以按照以下步骤使用百度地图JS SDK获取当前位置: 1. 在页面中引入百度地图JS SDK的代码: ```html <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script> ``` 其中,`ak`参数需要替换成您申请的百度地图应用的密钥。 2. 创建地图实例并获取当前位置信息: ```javascript // 创建地图实例 var map = new BMap.Map("container"); // 创建定位对象 var geolocation = new BMap.Geolocation(); // 获取当前位置信息 geolocation.getCurrentPosition(function (position) { if (this.getStatus() === BMAP_STATUS_SUCCESS) { // 获取经度和纬度 var lng = position.point.lng; var lat = position.point.lat; // TODO: 处理获取到的位置信息 } else { // 定位失败 alert('定位失败,请重试!'); } }, {enableHighAccuracy: true}); ``` 在以上代码中,`BMap.Map("container")`表示创建地图实例,并将地图放置在id为`container`的HTML元素中。`BMap.Geolocation()`表示创建定位对象。`geolocation.getCurrentPosition()`表示获取当前位置信息,回调函数中的`position`参数包含了获取到的位置信息。 3. 处理获取到的位置信息 在获取到位置信息后,您可以进行进一步的处理,比如在地图上标注当前位置: ```javascript // 在地图上标注当前位置 var point = new BMap.Point(lng, lat); var marker = new BMap.Marker(point); map.addOverlay(marker); map.centerAndZoom(point, 15); ``` 以上代码将当前位置标注在地图上,并将地图中心点设置为当前位置。您也可以根据自己的需求进行进一步的处理。 注意:使用百度地图API需要申请密钥,且每日有访问次数限制,建议在开发时进行注册申请。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值