手机位置服务,是目前android,iphone必然使用的组件,这个组件,直接嵌入在操作系统里,翻看我以前的博客有过相关解释。
国内android手机的位置服务,大多是百度地图提供或者高德地图提供。
翻看下百度或者高德的android服务,会发现获取位置坐标的时候,会有一个类型参数,其中包含缓存,重复,低精度等区分参数,这个参数意味着,即使APP调用了系统的定位,但是定位结果并非一定是最新的GPS坐标,之所以采用这样的逻辑,主要存在两个因素:
1,GPS在室内没有信号,不能有效快速定位。
2,GPS模块耗电太高。
GPS是天上的卫星发布的广播信号,因此要求接受GPS信号的终端机在空旷的室外环境下使用。
GPS模块费电,是因为既要用来接收来自卫星的通信信号,还要用来计算信号里的时间差,才能得出坐标数据。这两个动作都是耗电大户。
题目中美团发布的这两个原因,其实也是大部分位置服务应用共同面对的问题。比如说我手机定位在A栋楼的位置,中间我手机一直没拿出来亮屏,10分钟后开车跑到了1公里外的B栋楼内打开位置应用类APP,这时候很可能看到的A的位置。
还有个问题,一直没有人注意到:
用来计算费用的距离,不是直线距离,而是骑行距离。这会导致,及时坐标相差一点点,从导航那里获取的路线确实会出现不同线路分支的现象。最最影响的就是小区的大门,你在院墙根上点外卖,定位漂移在院墙外的可以比院墙内的轻松相差高达 1 公里的现象
参考资料:高德地图,Android定位状态码 https://lbs.amap.com/api/android-location-sdk/guide/utilities/location-type
定位成功,定位回调将按照定位结果返回如下几种响应码,用于区分本次定位的来源:
响应码 | 说明 | 介绍 |
---|
0 | 定位失败 | 请通过AMapLocation.getErrorCode()方法获取错误码,并参考错误码对照表进行问题排查。 |
1 | GPS定位结果 | 通过设备GPS定位模块返回的定位结果,精度较高,在10米-100米左右 |
2 | 前次定位结果 | 网络定位请求低于1秒、或两次定位之间设备位置变化非常小时返回,设备位移通过传感器感知。 |
4 | 缓存定位结果 | 返回一段时间前设备在同样的位置缓存下来的网络定位结果 |
5 | Wifi定位结果 | 属于网络定位,定位精度相对基站定位会更好,定位精度较高,在5米-200米之间。 |
6 | 基站定位结果 | 纯粹依赖移动、联通、电信等移动网络定位,定位精度在500米-5000米之间。 |
8 | 离线定位结果 | - |
9 | 最后位置缓存 | - |
原文地址:
https://www.opengps.cn/Blog/View.aspx?id=835
文章的更新编辑依此链接为准。欢迎关注源站原创文章!