我正在尝试在以下设备上使用 HTML5 地理位置:
- 宏达一 X
- 安卓 4.1.1
- WebKit/534.30(内置浏览器WebKit版本)
在使用 HTML5 Geolocation API 的内置浏览器和最新版本的 Chrome 应用程序网站上将无法找到我。但是,Firefox 应用程序会在几秒钟内找到我。
这是一个问题,因为多平台应用程序开发平台,例如 PhoneGap,使用 WebViews(= 内置浏览器)作为整个应用程序的容器。此外,如果一个网络应用程序不能做它应该做的事情,普通用户不会尝试不同的浏览器。
我的第一个想法是需要更多时间才能找到我,所以我设置了 5 分钟的超时时间(见帖子底部)。但是,它只会在没有找到我的位置的情况下达到那个超时。如果我不设置超时,则永远不会调用回调函数(我等了一个小时)。
我的第二个想法是,可能在我的手机或浏览器设置中的某个地方,请求位置的网站被阻止了。事实证明并非如此。
所以我的下一个想法是,也许这是一个编程问题,因为浏览器不遵循 W3C 标准,因此它们的 API 可能会以不同的方式工作。如果是这样,我如何在此设备上/在这些浏览器中检索位置?
由于即使像谷歌这样编码良好的网站也无法使用该 API 在这些浏览器上获取我的位置,这可能不是编程问题。如果确实不是,我应该咨询哪个 StackExchange 网站?(例如,如果是设备问题?)
我正在使用的 API(MDN):
navigator.geolocation.getCurrentPosition(success, error, options);
// Where success and error are callbacks and the options object may contain:
// enableHighAccuracy - boolean, speaks for itself
// timeout - maximum amount of milliseconds before one of the callbacks is called
// maximumAge - maximum age in milliseconds of cached location