V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
azh7138m
V2EX  ›  全球工单系统

高德地图定位很慢,且精度很低

  •  
  •   azh7138m · 2019-04-30 15:57:50 +08:00 · 10176 次点击
    这是一个创建于 2042 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 高德版本 8.60.3.2768
    • maps 版本 9.87.3
    • 手机型号 PH-1

    现象

    当我长时间(比如过了一晚)未打开高德地图的时候,定位经常需要分钟级别( 1 分钟多),才会有一个大概的定位(精度 100m 室内),在此(大概的定位)之前会定位到我住的地方(距离公司大概 2km )。

    发现高德会请求 CHANGE_WIFI_STATE,如果给这个权限,高德则会在比较快的时间内(通常 5s 左右)获取到一个大概的定位。

    对比 maps

    在比较快的时间内(通常 5s 左右)会有一个很高精度的定位(精度应该在 10m 室内 同样位置),但是高德地图无论开多久,定位精度都在 100m。

    通过 appops 可以看到 maps 只使用了 Location 与 Storage 权限,并未请求 CHANGE_WIFI_STATE 这个权限。

    问题

    为什么高德地图的定位耗时与精度会和 maps 差这么多?

    第 1 条附言  ·  2019-07-08 21:38:10 +08:00

    今天在又遇到一些问题后,重新看了一下是为啥,通过对比同事的等于7之后,发现高德其实是在扫描周边的wifi列表,所以会用到CHANGE_WIFI_STATE这个权限,但是吧 scanning wifi在Android里面应该是Security&location里面的东西了。

    为啥Google Maps会又快又准呢?因为它用了FINE_LOCATION,但是高德没有。

    第 2 条附言  ·  2019-12-09 22:22:54 +08:00

    今天重新看文档时发现

    Android 9:

    A successful call to WifiManager.startScan() requires all of the following conditions to be met:

    • Your app has the ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION permission.
    • Your app has the CHANGE_WIFI_STATE permission.
    • Location services are enabled on the device (under Settings > Location).

    wifi scan restrictions

    高德请求 CHANGE_WIFI_STATE 这个权限是符合标准的。


    被长时间的摧残后,我猜测,高德定位主要依赖wifi/基站这类设备信息,而不是GPS这种。

    18 条回复    2019-07-08 22:45:38 +08:00
    opengps
        1
    opengps  
       2019-04-30 16:03:30 +08:00 via Android
    跟 GPS 搜星数,wifi 参照量,基站信息都有关系
    azh7138m
        2
    azh7138m  
    OP
       2019-04-30 16:07:08 +08:00
    @opengps 按照国内用户量,amap 的 WiFi 信息比 maps 的要多很多的吧
    问题是为啥 maps 精度和速度都会明显好于 amap ?
    opengps
        3
    opengps  
       2019-04-30 16:21:17 +08:00
    你可能忽略了一个重炮武器:高精度的 IP 定位,从这个角度讲,google 的能力有多强
    虽然已经不对外提供,但是不代表他们自己会放弃这么好的利器不用
    opengps
        4
    opengps  
       2019-04-30 16:22:17 +08:00
    确认一下:你说的 maps 是 google maps 吧?
    azh7138m
        5
    azh7138m  
    OP
       2019-04-30 17:02:08 +08:00
    @opengps
    > 你说的 maps 是 google maps 吧?

    是 google maps
    hpj
        6
    hpj  
       2019-04-30 17:10:22 +08:00
    @opengps GPS 专家您好!
    xuhaotian
        7
    xuhaotian  
       2019-04-30 17:17:38 +08:00
    google play services 呢?应该会提供信息给 maps 吧
    xuddk727
        8
    xuddk727  
       2019-04-30 17:26:25 +08:00
    不知道 1#搜星是什么原因得出的结论,可否解释一下?难道说 GMAP 有动用非民用的频段或者星定位?
    ijse
        9
    ijse  
       2019-04-30 17:48:03 +08:00
    北京,iPhone X max, 用高德 App 导航,每次经过 天桥 都会提示 GPS 信号弱。。
    LuGew
        10
    LuGew  
       2019-04-30 17:56:48 +08:00 via Android
    opengps
        11
    opengps  
       2019-04-30 17:57:10 +08:00   ❤️ 1
    @xuddk727 别想远了,我的意思是 google 可以第一步先不实用 gps 定位。

    google 首先需要可以动用高精度 ip 定位能力,犯不着第一步就调用 gps 模块工作起来。gps 定位方式的缺点:又慢又费电又得请求授权有得看搜星数量还得系统服务支持
    opengps
        12
    opengps  
       2019-04-30 17:59:56 +08:00
    还有个别的因素:不同手机的位置服务提供方不同,有些手机直接是高德提供的,那么高德地图调用起来可能就会占有优势
    freedomshi
        13
    freedomshi  
       2019-04-30 19:58:33 +08:00
    了解一下 GPS 工作原理,你就知道 5S GPS 定位是不可能的。
    所以,高德这种情况正常,google 用了另外的机制实现混合定位(这是另外一个课题)。
    azh7138m
        14
    azh7138m  
    OP
       2019-04-30 21:51:28 +08:00 via Android
    @freedomshi 僵硬,高德不是专门做这个的公司吗,为啥会和 maps 差的这么多。
    xuddk727
        15
    xuddk727  
       2019-05-04 08:07:55 +08:00 via iPhone
    @opengps 原来如此,感谢仁兄
    Jirajine
        16
    Jirajine  
       2019-07-08 21:45:58 +08:00 via Android
    定位最好设为 device only。 其他所有电话数据,WiFi,蓝牙相关的权限都不要给。这种情况室内一般定不了位,ip 并不管用,尤其是国内常年使用代理的情况下。
    azh7138m
        17
    azh7138m  
    OP
       2019-07-08 22:13:54 +08:00
    @Jirajine 和隐私无关,我只是回答当初我的疑问
    opengps
        18
    opengps  
       2019-07-08 22:45:38 +08:00 via Android
    楼主买铜币把帖子推到置顶的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2590 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:30 · PVG 18:30 · LAX 02:30 · JFK 05:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.