getCurrentPosition()不会显示 - javascript

时间:2016-10-02 03:26:49

标签: javascript html geolocation

因此我尝试使用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;
}

1 个答案:

答案 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?