gpt4 book ai didi

google-chrome - W3C 地理定位返回缓存坐标

转载 作者:行者123 更新时间:2023-12-03 18:51:16 25 4
gpt4 key购买 nike

我有一个 Chrome 扩展程序,它使用 W3C Geolocation API 来获取用户的位置。该扩展主要用于 Chromebook。

我注意到,即使我将 maximumAge 参数设置为 0,API 似乎大多数时候都返回相同的坐标(缓存?)。我通过在位置 #1 的 Chromebook 上部署扩展来测试这一点,然后使用设备到位置 #2,大约 1 公里外。在那里再次调用 API 并返回与以前相同的坐标。过了一会儿(我每隔 10 分钟就有一次)它返回了正确的坐标,但是当我回到位置 #1 时,我再次从位置 #2 获得了缓存坐标。

我试过 getCurrentPosition , watchPosition和选项对象的几种组合,但它似乎总是产生相同的结果。

我目前的代码如下:

function getGeolocation() {
return new Promise((resolve, reject) => {
const options = { enableHighAccuracy: true, timeout: 30000, maximumAge: 0 };
navigator.geolocation.getCurrentPosition(resolve, reject, options);
});
}

getGeolocation()
.then(position => handler(position))
.catch(err => console.error(err));

我需要它在第一次尝试时或在合理的短时间内返回正确的坐标。有什么建议吗?

谢谢!

编辑:

请注意,在浏览器的传感器选项卡中更改坐标每次都可以完美运行,但在实际情况下,它似乎在大多数情况下只是返回缓存的结果。

编辑(11 月 5 日):

经过更多测试后,这似乎只发生在 Chrome OS 上。我们无法在 PC 上重现相同的行为(有或没有扩展)。

最佳答案

这是我在探索 W3C Geolocation API 时收集的一些信息.

首先,我运行了 Wikipedia页面底部的示例代码。它与您的代码几乎相同,只是您使用 Promise。从那里,我用方法 得到了位置、纬度和经度。获取当前位置() .方法 watchPosition() 也有效。

我在我的 PC 上对此进行了测试,并在 Chrome 开发者控制台中显示了结果。它也可以在我的手机上四处走动(最后几位数字随着纬度和经度而变化)。

关于PositionOptions interface ,从您的选项中读取,允许从调用 getCurrentPosition() 或 watchPosition() 直到调用 successCallback 的等待时间为 30000 毫秒(30 秒),并且因为 maximumAge 为 0,它不会使用缓存位置,而是,它必须立即尝试获取新的位置对象。

现在为 重要 部分。

启用高精度 提供应用程序希望获得最佳结果的提示。但是有一些方法可以确定(查看开头的维基百科文章,滚动到“位置来源”):

  • 全局定位系统 (全局定位系统)——精度最高;在大多数 Android 智能手机中,精度可达 10 米。
  • 手机追踪 - 如果使用没有内置 GPS 芯片的手机或无线调制解调器。
  • WiFi定位系统
  • IP地址位置

  • 还有 position accuracy ,它给出了以米为单位的精度。在我的电脑上,我得到了大约 100 000 米的精度,所以它不是有效的纬度和经度(在谷歌地图上搜索,输入“纬度,经度”并查看标记指向的位置。另外,console.log(position.coords.accuracy ))。在我的手机上,我得到了大约 15 - 50 米。

    智能手机使用 GPS 位置信息,而 PC 使用网络位置。
    我不是很喜欢 Chromebook,但我发现了 this回答:

    No current Chromebook has the GPS feature. But you can let a site know your location. If you use Google as your default search engine on your phone, your location is used by default for your searches on Google. If you let Chrome share your location with a site, Chrome sends information to Google Location Services to get an estimate of where you are. Chrome can then share that info with the site that wants your location.



    还有其他获取位置的方法,见 Google Maps Geolocation API .另外,尝试搜索 diffrences between these two .
    希望这对您有所帮助。

    最好的祝福。

    关于google-chrome - W3C 地理定位返回缓存坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52984621/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com