我想通过单击按钮来检索用户地理位置。
我用
navigator.geolocation
(纯js)
它工作了一段时间(使用下面的代码),好坏参半(过去在您第二次在 Firefox 上接受本地化权限提示时工作,并且在 Safari 上每次接受时都工作),但现在它在 Firefox 和 Safari 上完全停止工作(ios )(在 Chrome 和 Edge 上运行良好)
接受本地化后,我在 Firefox 上收到
GeolocationPositionError {code: 3, message: "Position acquisition timed out"}
错误。在 Safari 上,它不再询问我的权限,只是发送“失败 2”警报。
请指出正确的解决方案如何解决这个问题...
我的代码:
if (!navigator.geolocation) {
alert("Fail 1")
} else {
isOnline();
if (internet){
getAddress().then( l =>{
const [latitude, longitude] = l
formData.append("latitude", latitude);
formData.append("longitude", longitude);
sendRequest()
}).catch(e =>{
console.log(e) // GeolocationPositionError {code: 3, message: "Position acquisition timed out"}
if (internet){
alert("Fail 2")
}else{
noInternet()
}
})
}else{
noInternet()
}
}
获取地址函数:
export async function getAddress() {
const position = await getCoordinates();
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
return [latitude, longitude]
}
获取坐标函数:
async function getCoordinates() {
return new Promise(function(resolve, reject) {
navigator.geolocation.getCurrentPosition(resolve, reject, navigatorLocationOptions);
});
}
navigatorLocationOptions:(我尝试了不同的组合,但似乎都没有解决问题)
const navigatorLocationOptions = {
enableHighAccuracy: true,
timeout: 5000,
// maximumAge: 100000
};
好吧,我认为代码没问题,问题来自浏览器。 如果您遇到类似问题,请执行以下两个步骤:
确保网页受保护 (https)。 (本地化不 在 http 上工作)
尝试页面重新加载的两种选项:
尽管我没有找到原因,但它们的工作方式似乎有点不同。