V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
githmb
V2EX  ›  Android

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

  •  
  •   githmb · 222 天前 · 4412 次点击
    这是一个创建于 222 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不知道为什么我手机上 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()肯定也不可信,这些地图软件是怎么实现的?

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

    你所说的这个是客户端完成,地图软件应该是服务端完成
    客户端从请求到获取结果,中间需要做连接、安全检查等等,甚至可能人为延时(出于安全理由的规定)
    服务端通过多参数算法完成(见#1),而且因为有证照,安全校验过程、延时等等可能很短,gps 如果耗时长的话,可能只是用于验证和修正,就是除非算法结果和实测 gps 相差较大,需要重算,否则一般情况简单修正就能显示了
    nilsNgoose
        3
    nilsNgoose  
       222 天前
    GPS_PROVIDER 响应过久,一般是楼宇密集,遮挡信号。
    j3dream
        4
    j3dream  
       222 天前
    NETWORK_PROVIDER 小米的应该是可用的, 网络定位多数是通过获取基站信息直接查数据库得到, 基站数据有一些网站可以查 比如: http://www.cellocation.com/, 卫星定位很多时候是因为搜星、遮挡导致速度很慢,可以试试下载一下 GPSTest 试试,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2930 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:04 · PVG 17:04 · LAX 02:04 · JFK 05:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.