javascript GeolocationPositionError:位置获取超时

8dtrkrch  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(115)

我想检索用户的地理位置点击按钮。
我使用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
};

11dmarpk

11dmarpk1#

好的,我认为代码是好的,问题来自浏览器。如果你遇到类似的问题,有两个步骤可以遵循:
1.确保网页受到保护(https)。(本地化不适用于http)

  • 尝试页面重新加载的两个选项:
  • Ctrl + Shift + R
  • Ctrl + F5

他们似乎有点不同的工作,即使我没有找到它的原因。

相关问题