Javascript navigator.geolocation.getCurrentPosition返回";获取位置时出现未知错误“;

Javascript navigator.geolocation.getCurrentPosition返回";获取位置时出现未知错误“;,javascript,node.js,geolocation,Javascript,Node.js,Geolocation,我目前正在使用地理定位API 当允许我的浏览器(localhost或webhost)获取我的位置时,my console.log返回: 获取位置时出现未知错误 我无法确定,因为我已经授权了连接,而且我的代码看起来很干净,因为我是从Mozilla官方MDN获取的 这里是my client.js: var options = { enableHighAccuracy: true, timeout: 5000, max

我目前正在使用地理定位API

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

获取位置时出现未知错误

我无法确定,因为我已经授权了连接,而且我的代码看起来很干净,因为我是从Mozilla官方MDN获取的

这里是my 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);
任何暗示都很好,
谢谢

目前,这是我用来让我的用户获得lat/lng的

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。然后,我使用谷歌的反向编码来获取实际地址。

目前,这是我用来获取用户lat/lng的

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的反向编码来获取实际地址。

google已经更改了(5-6月)API密钥的一些策略(现在需要有效的API密钥)。如果您转到Firefox并键入
about:config
并搜索属性
geo.wifi.uri
,您将看到没有api键的google url。您可以将url更改为另一个地理服务(),但对于生产环境,最好执行以下直接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了

(另请参见)

谷歌已更改(5-6月)一些API密钥政策(现在需要有效的API密钥)。如果您转到Firefox并键入
about:config
并搜索属性
geo.wifi.uri
,您将看到没有api键的google url。您可以将url更改为另一个地理服务(),但对于生产环境,最好执行以下直接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了


(另请参见)

谢谢,到目前为止,它没有返回任何内容,例如“null”、没有日志、什么都没有。您使用的浏览器是什么?那个浏览器允许分享用户的位置吗?是的,我刚刚安装了Chrome,它在Chrome上运行得很好,但在其他浏览器——Firefox 61.0.1 uuOpera 54.0.2952.54——上运行得不好。当然,浏览器的问题是,我更准确地安装了Google Chrome 67.0.3396.99。我用以太网线连接,我想在我的设备上没有启用wifi,我的硬件和Ubuntu 16.04似乎有问题,这真的不应该是个问题,你有没有试过检查firefox是否关闭了隐私模式,它是否授予网站用户位置。我刚刚在firefox和windows 10上的Edge上进行了测试,这段代码非常有效。Firefox确实有一点延迟,但没有什么大问题。谢谢,到目前为止,它没有返回任何信息,比如“null”、没有日志、什么都没有。您使用的是什么浏览器?那个浏览器允许分享用户的位置吗?是的,我刚刚安装了Chrome,它在Chrome上运行得很好,但在其他浏览器——Firefox 61.0.1 uuOpera 54.0.2952.54——上运行得不好。当然,浏览器的问题是,我更准确地安装了Google Chrome 67.0.3396.99。我用以太网线连接,我想在我的设备上没有启用wifi,我的硬件和Ubuntu 16.04似乎有问题,这真的不应该是个问题,你有没有试过检查firefox是否关闭了隐私模式,它是否授予网站用户位置。我刚刚在firefox和windows 10上的Edge上进行了测试,这段代码非常有效。Firefox确实有一点延迟,但没什么大不了的。