【问题标题】:Chrome Browser (on Android) Precise GeoLocationChrome 浏览器(在 Android 上)精确地理位置
【发布时间】:2021-08-13 20:45:49
【问题描述】:
function getLocation() {
    var options = {
        enableHighAccuracy: true,
        timeout: 5000,
        maximumAge: 500
    };

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition, error, options);
    } else {

    }
}

我正在使用上面的代码来获取网页上的位置。在 iPhone/Safari 浏览器上,我得到 14 位小数,但在 Android/Chrome 上只有 7 位小数。如何在 Andriod 上获得更精确的位置?

【问题讨论】:

    标签: android google-chrome browser geolocation


    【解决方案1】:

    在 Firefox、笔记本电脑和移动设备上进行了一些测试:

    根据我的位置,它们都返回不同的精度,即使在同一请求期间,它们在纬度和经度字段中也会有所不同。在我看来,当它不相关时,精度是四舍五入的。

    你需要考虑的是,html Geolocation API 不一定通过 GPS 模块请求坐标,但经常因为功耗而选择 IP 路线。这也非常准确。

    小数点后第 5 位的精度足以为您提供 10 米的分辨率。 严格使用 GPS 是不可能的,但可以“优先”。您已经通过请求选项在代码中做到了这一点。 More info

    您可以做的是在 GPS 可用或不可用时通知用户您的应用。 或者,使用不同的 api,例如:mapquest

    是否有可能您的手机的 GPS 定位服务已禁用,并且您仅通过蜂窝网络连接?这可以解释为什么您的位置指向 1.5 个街区外。最近的手机信号塔?

    【讨论】:

    • 在 iOS 上,纬度/经度非常准确地固定在地图上。在 Android 上,由于没有足够的有效数字,pin 可能距离实际位置最多 1.5 个块。一个例子是 33.51554157215498 与 33.5154456 是可以接受的,但是当位置超过 1+ 个街区时,就不行了。
    • 您需要考虑的是,html Geolocation API 不一定需要 GPS 坐标,但通常需要 IP 路线。小数点后 5 位内的精度足以为您提供 10 米的分辨率。看看这个帖子:gis.stackexchange.com/questions/8650/…
    • 明白了。但在 Android 上,该函数返回一个纬度/经度,使用户距离实际位置最多 1.5 个街区。因此,我怎样才能获得更准确的纬度/经度,而不是获得更多的小数位?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多