地理定位在简单的js中不起作用

时间:2017-03-16 07:01:56

标签: javascript

我有这段代码:

document.querySelector("#posBtn").addEventListener("click", function () { navigator.geolocation.getCurrentPosition(PositionFunction); });

function PositionFunction(p) {

    console.log(p.coords.longitude);
}

看起来很简单,但它不起作用。为什么呢?

2 个答案:

答案 0 :(得分:0)

似乎工作得很好!您将获得的是一个警告,即HTTP不再支持GeoLocation,您需要HTTPS才能工作。

  

getCurrentPosition()和watchPosition()不再适用于不安全的起源。要使用此功能,您应该考虑将应用程序切换到安全的来源,例如HTTPS。

document.querySelector("#posBtn").addEventListener("click", function () { navigator.geolocation.getCurrentPosition(PositionFunction); });

function PositionFunction(p) {

    console.log(p.coords.longitude);
}
<button id="posBtn">
Get Longitude
</button>

更多详情here

这是工作example of your code

答案 1 :(得分:0)

尝试捕获错误,以了解其无效的原因

document.querySelector("#posBtn").addEventListener("click",function(){
         if (navigator.geolocation) {
              navigator.geolocation.getCurrentPosition(PositionFunction, showError);
          } else {
              console.log("Geolocation is not supported by this browser.");
          }

      });

      function PositionFunction(p) {
         console.log(p.coords.longitude);
      };

      function showError(error) {
        switch(error.code) {
            case error.PERMISSION_DENIED:
                console.log("User denied the request for Geolocation.");
                break;
            case error.POSITION_UNAVAILABLE:
                console.log("Location information is unavailable.");
                break;
            case error.TIMEOUT:
                console.log("The request to get user location timed out.");
                break;
            case error.UNKNOWN_ERROR:
                console.log("An unknown error occurred.");
                break;
        }
    }

查看工作示例:https://jsfiddle.net/ozmsq23w/6/