我想检索用户的地理位置点击按钮。
我使用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()
}
}
字符串
getAddress函数:
export async function getAddress() {
const position = await getCoordinates();
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
return [latitude, longitude]
}
型
getCoordinates函数:
async function getCoordinates() {
return new Promise(function(resolve, reject) {
navigator.geolocation.getCurrentPosition(resolve, reject, navigatorLocationOptions);
});
}
型
navigatorLocationOptions:(我尝试了不同的组合,似乎没有一个能解决这个问题)
const navigatorLocationOptions = {
enableHighAccuracy: true,
timeout: 5000,
// maximumAge: 100000
};
型
1条答案
按热度按时间11dmarpk1#
好的,我认为代码是好的,问题来自浏览器。如果你遇到类似的问题,有两个步骤可以遵循:
1.确保网页受到保护(https)。(本地化不适用于http)
他们似乎有点不同的工作,即使我没有找到它的原因。