因此我尝试使用getCurrentPosition来显示纬度和经度坐标,但不会显示任何内容。我测试浏览器是否接受它并且没有弹出错误消息。
Javascript:
window.onload = Location;
var x = document.getElementById("location");
function Location() {
if (navigator.geolocation) {
navigator.geolocation.watchPosition(show);
} else {
x.innerHTML = "Not working";
}
}
function show(position) {
x.innerHTML = position.coords.latitude;
}
答案 0 :(得分:0)
if (navigator.geolocation)
方法在这里不起作用,因为navigator.geolocation
是一个空对象,无论是否可以获得位置。您可以console.log(navigator.geolocation)
验证这一点。
而是使用navigator.geolocation.watchPosition
的错误回调参数:
function getLocation() {
navigator.geolocation.watchPosition(showPosition, throwError);
}
function throwError(err) {
switch (err.code) {
case 1: x.innerHTML = "Permission denied."; break;
case 2: x.innerHTML = "Position unavailable."; break;
case 3: x.innerHTML = "Request timed out."; break;
default: x.innerHTML = "Unknown error.";
}
}
https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition https://developer.mozilla.org/en-US/docs/Web/API/PositionError
此外,还有一些重要的浏览器怪癖需要注意。
如果您在本地文件系统上测试您的网站,Chrome会阻止地理定位请求: HTML 5 Geo Location Prompt in Chrome
Firefox 仍无法正确处理错误回调(向下滚动以查看解决方法):Is there a way to check if geolocation has been DECLINED with Javascript?