navigator.geolocation.getCurrentPosition返回“未知错误获取位置”

时间:2018-07-21 23:19:11

标签: javascript node.js geolocation

我目前正在使用地理位置API。

当允许我的浏览器-localhost或webhost-获取我的位置时,console.log返回:

  

未知错误获取位置

我已经弄清楚了,因为我已经授权了连接,而且由于我是从Mozilla官方MDN中获取的,所以我的代码似乎很干净。

这是我的client.js:

      var options = {
            enableHighAccuracy: true,
            timeout: 5000,
            maximumAge: 0
      };

      function success(pos) {
        var crd = pos.coords;

        console.log('Votre position actuelle est :');
        console.log(`Latitude : ${crd.latitude}`);
        console.log(`Longitude: ${crd.longitude}`);
        console.log(`Plus ou moins ${crd.accuracy} mètres.`);
      };

      function error(err) {
        console.warn(`ERROR(${err.code}): ${err.message}`);
      };

      navigator.geolocation.getCurrentPosition(success, error, options);

任何提示都会很棒, 谢谢

2 个答案:

答案 0 :(得分:1)

Google已更改(五月至六月)关于API密钥的某些政策(现在需要有效的API密钥)。如果您使用Firefox并输入about:config并搜索属性geo.wifi.uri,则会看到没有api键的google url。您可以将网址更改为另一个地理服务(https://location.services.mozilla.com/v1/geolocate?key=test),但对于生产来说,最好执行如下所示的直接ajax调用:

    const res = await fetch('https://location.services.mozilla.com/v1/geolocate?key=test').then(el=>el.json())
    const point = [res.location.lat, res.location.lng]

一旦Firefox解决了问题,您就可以像以前一样使用地理定位API。

(另请参见html geolocation: Unknown error acquiring position

答案 1 :(得分:0)

目前,这是我用来为用户提供经纬度的功能

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function (position) {
    var pos = {
      lat: position.coords.latitude,
      lng: position.coords.longitude
    };
    console.log("Lat: " + pos.lat + ". Lng: " + pos.lng);
  })
}

这将使用浏览器的地理位置,并返回用户lat和lng。然后,我使用Google的反向地理编码来获取实际地址。