2

在此先感谢您。我建立了一个网站,当您单击“导航”按钮时,可以选择将您引导至特定位置。启用手机的 GPS 后,在桌面上一切正常,在移动设备上一切正常。

我使用谷歌地图参考,它工作得很好:

http://maps.google.com/maps?saddr=myLat,myLng&daddr=targetLat,targetLng

我在$('.button').click()上这样做。不在$(window).load$(document).ready上。当您单击该按钮时,它会调用地理定位功能:

function getGeolocation(){
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(geoSuccess, geoError);
    } else {
        $('.error-message').html('<p>Your browser does not support this function</p>');
    }
}

function geoSuccess(position) {
    myLat = position.coords.latitude;
    myLng = position.coords.longitude;

    window.location.href = 'http://maps.google.com/maps?saddr=' + myLat + ',' + myLng + '&daddr=targetLat,targetLng';
}

function geoError(){
    switch(error.code) {
        alert('example alert - enable GPS');

        case error.PERMISSION_DENIED:
            $('.error-message').html('<p>User denied the request for Geolocation.</p>');
            break;
        case error.POSITION_UNAVAILABLE:
            $('.error-message').html('<p>Location information is unavailable.</p>');
            break;
        case error.TIMEOUT:
            $('.error-message').html('<p>The request to get user location timed out.</p>');
            break;
        case error.UNKNOWN_ERROR:
            $('.error-message').html('<p>An unknown error occurred.</p>');
            break;
    }
}

但是当 GPS 被禁用时,问题就来了。

首先,有时它不会进入geoError()。我尝试了很多次,但我唯一“发现”的是它有时会缓存。那可能吗 ?

但主要问题是,当 GPS 被禁用时,弹出“示例警报”,然后我打开我的 GPS 并再次单击按钮,它不再工作。我必须刷新页面才能启用 GPS。我想避免这种情况。有谁知道为什么会这样,有没有办法做我想做的事?

另一个问题是当我在打开 GPS 的情况下加载我的页面时。然后我将其关闭并单击按钮。什么都没有发生。它进入getGeolocation(),变为真,然后停止。它不输入 getCurrentPosition()。有任何想法吗?

4

3 回答 3

0

我曾经遇到过同样的问题,最后我找到了解决方案。您可以将 getCurrentPosition 更改为 watchPosition,似乎 getCurrentPosition 无法识别位置何时发生变化,请 watch 帮助我们做到这一点。试试我的解决方案,希望它对你有帮助:) P/S 你应该设置超时:10000 用于 watchpostion 或 getcurrentpostion

于 2014-12-11T20:42:59.440 回答
0

在您的错误函数中,缺少参数。

function geoError(error){
    //code goes here
    }

来源:https ://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation_error

于 2017-12-21T06:33:38.163 回答
0

我在 Android 6.0 和 Chrome 59.0.3071.125 上遇到了同样的问题。

简而言之:当我启动一个位置为 Off的 webapp 时,我收到了一个 PositionError ,如预期的那样。

但是,当我将位置切换回 On时,每次后续调用navigator.geolocation.getCurrentPositionnavigator.geolocation.watchPosition返回相同的错误。

我对maps.google.com进行了同样的尝试,结果完全相同(它们显示了一个小吃店Google Maps 无法确定您的精确位置)所以我相信没有解决方法。

离子框架论坛上有一个类似的帖子- 他们也没有找到解决方案。

总结一下:

看起来 Chrome 正在检查位置服务**在页面加载时,并且不再更新状态。

因此,唯一有帮助的是重新加载 web 应用程序,这会强制 chrome 再次检查位置服务是否可用。


更新:

这是 Chromium 中的一个已知错误:672301721977。解决方法在 Chrome Mobile v59 后面的lsd-permission-prompts标志中可用。

于 2017-07-06T18:07:52.050 回答