为啥这个 HTML5 地理定位代码不能仅在 iOS 上获取用户的位置?

Posted

技术标签:

【中文标题】为啥这个 HTML5 地理定位代码不能仅在 iOS 上获取用户的位置?【英文标题】:Why isn't this HTML5 geolocation code working to get a user's location on iOS only?为什么这个 HTML5 地理定位代码不能仅在 iOS 上获取用户的位置? 【发布时间】:2017-04-12 15:59:22 【问题描述】:

我正在测试这个简单的地理定位代码,但由于某种原因它无法在 ios 设备上运行。我已经在 MacOS、Windows、Windows Phone、android 手机等上进行了测试,它在所有设备上都可以正常工作。

我在授予权限后总是收到“POSITION_UNAVAILABLE”错误。

navigator.geolocation.getCurrentPosition(
  function success(position) 
    var primary = getUniqueId();

    var url = endpointBaseurl +
      '?property_code=' + propertyCode +
      '&distribService=' + distribService +
      '&lat=' + position.coords.latitude +
      '&lon=' + position.coords.longitude +
      '&distribTarget=' + primary;

    //Update the line below to be one of your links.
    addMenuItem('Offers', url);
  ,
  function error(err) 
    switch (err.code) 
      case 1:
        alert("You must allow location in order to receive tobacco offers. Please refresh and try again.")
        break;
      case 2:
        alert('POSITION_UNAVAILABLE');
        break;
      case 3:
        alert('Error 3');
        break;
      default:
        alert("Unable to determine your location. Please refresh and try again.");
    
  , options);

我已经在物理设备上以及通过 Browserstack 进行了测试。该网站在 HTTPS 上运行。

关于为什么不应该工作或我应该如何进行调试的任何想法?我正在把头发拉到这个上面。

【问题讨论】:

你看过 *** 上的this 问题吗?这可能会有所帮助。 【参考方案1】:

编辑: 在this 页面上,它显示以下内容:

获取地理位置失败,因为至少一个内部位置源返回了内部错误。

尝试使用PositionError.message(在您的情况下为err.message):

返回一个人类可读的 DOMString 描述 错误。规格说明,这主要用于 调试使用,不会直接显示在用户界面中。


确保您在 iOS 设置中已开启定位服务并将其设置为始终或使用时。

【讨论】:

谢谢,这里是 err 对象; PositionError code: 3, message: "Timeout expired", PERMISSION_DENIED: 1, POSITION_UNAVAILABLE: 2, TIMEOUT: 3 我刚刚将超时时间增加到 20000,并收到了这个; PositionError code: 2, message: "The operation couldn’t be completed. (kCLErrorDomain error 0.)", PERMISSION_DENIED: 1, POSITION_UNAVAILABLE: 2, TIMEOUT: 3

以上是关于为啥这个 HTML5 地理定位代码不能仅在 iOS 上获取用户的位置?的主要内容,如果未能解决你的问题,请参考以下文章

哪些网络浏览器支持通过 HTML5 进行地理定位?

ios的地理定位精度

为啥这个 HTML5 地理位置相关的 JavaScript 代码会出错?

HTML5 地理定位精度 Android 与 iOS 非常不同

为啥 html5 地理位置无法获得结果?

HTML5 地理定位在 Safari 上不起作用 - Mac OS/iOS