【问题标题】:Geolocation in Safari 9 always returning Position UnavailableSafari 9 中的地理位置总是返回位置不可用
【发布时间】:2016-09-07 14:38:58
【问题描述】:

我正在构建一个需要获取用户位置的应用。为此,我在按钮上附加了一个单击事件,然后调用

navigator.geolocation.getCurrentPosition(getVenues, handleError);

这在 Chrome 和 Firefox 上按预期工作,getVenues 函数在我授予对我的位置的访问权限后运行。在 Safari 上,在授予访问权限后,会立即调用 handleError 函数。

这发生在我的本地服务器和生产服务器上,它们都使用 HTTPS。我的电脑正在连接wifi。 Safari 版本 9.1.2 (11601.7.7)。我浏览了其他一些与 Safari 中的地理定位相关的帖子,到目前为止,没有一个解决方案有效。

我尝试将选项传递给getCurrentPosition 以增加timeoutmaximumAge 但没有运气。

这是我的完整代码示例:

$("#nearby-find").on('click', function() {
  navigator.geolocation.getCurrentPosition(getVenues, handleError);
});

var getVenues = function(position) {
  console.log(position);
};

var handleError = function(error) {
  console.log(error);
}

单击按钮会启动地理定位访问请求,但在单击接受后立即调用 handleError 函数,错误代码为 2(位置不可用)。

我需要检查 Safari 地理定位的其他问题/错误/陷阱吗?

【问题讨论】:

  • 显然有一些安全偏好会导致这种情况;您确定启用了“定位服务”吗?除此之外,地理位置代码无论如何都必须能够处理失败,因为人们可能会对弹出窗口说“不”。
  • 哇,Safari 不在启用定位服务列表中。这是默认设置 - 需要通过首选项明确授予 Safari 访问定位服务的权限?
  • 我猜;我不是 Mac 用户。我刚用谷歌搜索:)
  • 我也遇到过这种情况,并假设(错误地)不允许 Safari 访问定位服务。

标签: javascript safari geolocation


【解决方案1】:

Safari 不在“系统偏好设置”的“启用定位服务”列表中的应用程序列表中。您需要进入“系统偏好设置”>“安全和隐私”>“隐私”选项卡,并确保 Safari 位于“启用位置服务”列表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2021-08-16
    相关资源
    最近更新 更多