安卓平台下高德地图等软件是如何定位的?

2023-09-18 12:39:59 +08:00
 githmb

不知道为什么我手机上 NETWORK_PROVIDER 是不可用的,GPS_PROVIDER 请求定位后,3 分钟才会收到位置更新的回调:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0f, mLocationListener)
2023-09-18 12:27:00.636 26666-26666 ViewRootImpl app I  ViewRoot's Touch Event : ACTION_UP
2023-09-18 12:30:17.056 26666-26666 Logger@Android app D onLocationChanged(MainActivity.kt:40) -> onLocationChanged:Location[gps 31.419743,115.446772 hAcc=67 et=+18h14m1s466ms etAcc=+5ms alt=93.18548583984375 vAcc=94 sAcc=??? bAcc=??? {Bundle[mParcelledData.dataSize=96]}]

locationManager.getLastKnownLocation()肯定也不可信,这些地图软件是怎么实现的?

8573 次点击
所在节点    Android
4 条回复
opengps
2023-09-18 12:46:46 +08:00
地图软件的信息来源比较多:
1 ,ip 定位,大厂甚至有自己的高精度定位库
2 ,手机基站定位
3 ,蓝牙定位
4 ,wifi 定位
5 ,惯性导航( app 用上这个的这个很少,毕竟高精度场景极其贵重)
6 ,其他辅助定位(比较多,综合应用,比如浏览器定位,比如同局域网内其他服务辅助的定位等等)
NoOneNoBody
2023-09-18 13:13:02 +08:00
不懂安卓开发,只是从个人认知推测

你所说的这个是客户端完成,地图软件应该是服务端完成
客户端从请求到获取结果,中间需要做连接、安全检查等等,甚至可能人为延时(出于安全理由的规定)
服务端通过多参数算法完成(见#1),而且因为有证照,安全校验过程、延时等等可能很短,gps 如果耗时长的话,可能只是用于验证和修正,就是除非算法结果和实测 gps 相差较大,需要重算,否则一般情况简单修正就能显示了
nilsNgoose
2023-09-18 13:35:04 +08:00
GPS_PROVIDER 响应过久,一般是楼宇密集,遮挡信号。
j3dream
2023-09-18 14:32:51 +08:00
NETWORK_PROVIDER 小米的应该是可用的, 网络定位多数是通过获取基站信息直接查数据库得到, 基站数据有一些网站可以查 比如: http://www.cellocation.com/, 卫星定位很多时候是因为搜星、遮挡导致速度很慢,可以试试下载一下 GPSTest 试试,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/974806

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX