这是我最基本的代码:
if (navigator.geolocation) {
// WILL GET TO THIS POINT WITH TEST `ALERT()`
navigator.geolocation.getCurrentPosition(
// WILL NOT GET OT THIS POINT IN ANDROID BROWSER
function(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
}, showError, {
enableHighAccuracy: true,
timeout : 5000,
maximumAge: 0
}
);
} else {
return alert('No Geolocation Support.');
}
};
它在 iOS(Safari 和 Chrome)中运行良好;以及我尝试过的所有 PC 浏览器。
在 Android 上,我已经试用了标准的 HTC 浏览器、Chrome 和 Dolphin。卫星看起来像是在搜索,然后停止了。我什至不记得它要求我允许使用地理定位(可能忽略了那部分)
更新:它确实适用于我的 Nexus 10 Chrome 浏览器。但不是我的 HTC One X。
更新 2 - 这似乎只发生在一台 Android 设备上,一台 AT&T HTC One X。所有其他 Android 设备、PC 浏览器和 iOS 都可以正常工作。在 One X 上,我收到错误代码:超时。此外,GPS 在此设备上工作正常。
最佳答案
你必须使用 HTTPS
从 Chrome 50 开始,Chrome 不再支持使用 HTML5 Geolocation API 从非安全连接传送的页面获取用户位置。这意味着进行 Geolocation API 调用的页面必须从安全上下文(例如 HTTPS)提供服务。
https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only?hl=en
关于JavaScript Geolocation 在所有 Android 浏览器中都失败 - 在 iOS 和 PC 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18107105/