我目前正在使用地理位置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);
任何提示都会很棒, 谢谢
答案 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。
答案 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的反向地理编码来获取实际地址。