为啥这个 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 地理位置相关的 JavaScript 代码会出错?