【问题标题】:Geolocation implementation in OperaOpera 中的地理位置实现
【发布时间】:2013-03-11 16:56:24
【问题描述】:

我正在测试 HTML5 地理位置。 我在 Opera 和 Opera Mobile 中有一些奇怪的结果。

当我在最后一次访问后的一段时间(例如 25 分钟)后访问该网站时,位置时间戳来自过去的某个时间。但是我通过选项告诉我我想要位置不超过 5 秒。页面刷新后,我得到接近“现在”的位置时间戳。我认为它应该在每次访问时返回接近“现在”的位置时间戳。

例子:

首次访问:位置时间戳23:23:13

关闭浏览器:

23:45:20返回站点:位置时间戳23:25:21

刷新:位置时间戳 23:45:11

这是我的 API 调用:

navigator.geolocation.getCurrentPosition(geoSuccess, geoError, { maximumAge: 5000, timeout: 10000, enableHighAccuracy: true });

你可以在我为测试创建的天蓝色网站上观察这个

geotest.apphb.com

编辑: 几分钟前,我了解到opera:config 让我可以访问地理位置设置,其中我发现仅在更改时发送位置请求。 当我将其关闭时,地理位置 api 按预期工作。但是我不明白这个设置。为了发送位置请求必须改变什么? 启用此设置后,地理位置 api 会为我提供几个小时前的位置。即使我已经在不同的城市了。

【问题讨论】:

    标签: html geolocation opera w3c-geolocation


    【解决方案1】:

    根据Opera's config website for WindowsSend location request only on change的含义如下:

    仅当某些数据提供者(Wi-Fi、手机等)实际发生变化时才发送位置请求。

    所以我假设当您更改城市时,您并没有像上面提到的那样更改数据提供者。如果您要找到一个 Wi-Fi 接入点或使用其他技术来访问互联网,它可能会发送一个位置请求并进行更新。

    【讨论】:

    • 这可能是它!你知道我是否可以更新赏金吗?我需要时间来检查一下。
    • @Peri 老实说,我不知道你是否可以更新赏金。我尝试查看how the bounty system works,但没有找到任何扩展它的东西。另外,你也可以test this using a socks proxy
    • @BPaasch 查看What is automatic awarding?Approximately twenty-four hours after the end of the bounty period, if the bounty starter has not manually awarded the bounty, the bounty may be awarded automatically.
    • 好的,你回答了我的问题。谢谢。恭喜你的赏金! :) 但我仍然不明白该浏览器的行为有什么意义。如果我改变城市,它应该显示新的位置。我不明白我的手机提供商会如何改变。
    • @Peri 我同意,这是一个非常奇怪的配置。
    【解决方案2】:

    由于页面已经加载,getCurrentPosition 假设您想要的位置是页面加载时的位置(页面加载时用户当前的位置)。

    使用watchPosition不断更新位置(无需重新加载页面)。

    【讨论】:

    • “页面已加载”是什么意思?我可以在上次访问后几个小时访问页面,它仍然显示以前的位置 - 不同的城市
    • 也许它被缓存了,你试过WatchPosition(它接受相同的参数)吗?
    • 是的,它被缓存了。那就是问题所在。它忽略了我的参数 { maximumAge: 5000 }
    猜你喜欢
    • 2011-06-21
    • 2015-06-14
    • 2017-04-21
    • 2011-03-15
    • 2020-02-10
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    相关资源
    最近更新 更多