GeolocationPositionError:位置获取超时

问题描述 投票:0回答:1

我想通过单击按钮来检索用户地理位置。

我用

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
};

javascript firefox mobile-safari navigator w3c-geolocation
1个回答
0
投票

好吧,我认为代码没问题,问题来自浏览器。 如果您遇到类似问题,请执行以下两个步骤:

  1. 确保网页受保护 (https)。 (本地化不 在 http 上工作)

  2. 尝试页面重新加载的两种选项:

    • Ctrl + Shift + R
    • Ctrl + F5

    尽管我没有找到原因,但它们的工作方式似乎有点不同。

© www.soinside.com 2019 - 2024. All rights reserved.