打开和关闭GPS时的地理定位问题

时间:2014-11-01 23:14:44

标签: javascript html5 gps geolocation w3c-geolocation

先谢谢。我建立了一个网站,当您点击按钮"导航"时,可以选择引导您到达特定的地方。桌面上的一切正常,当手机的GPS启用时,一切正常。

我使用谷歌地图参考,它的工作正常:

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

我在 $(' .button')上执行此操作。click()。不在 $(窗口).load $(文档).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()。我尝试了很多次,但我发现的唯一的事情是#34;它有时会缓存。这可能吗?

但主要问题是,当GPS被禁用时,&#34;示例警告&#34;弹出,然后我打开我的GPS并再次点击按钮,它不再工作。我必须刷新页面以应用GPS开启。我想避免这种情况。有谁知道为什么会发生这种情况,有没有办法做我想做的事?

另一个问题是当我打开GPS加载页面时。然后我将其关闭并单击按钮。什么都没发生。它输入 getGeolocation(),得到true然后停止。它没有输入getCurrentPosition()。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我遇到过同样的问题,最后我找到了解决方案。你可以将getCurrentPosition改为watchPosition,看来当getCurrentPosition无法识别位置变化时,看看帮助我们做到这一点。试试我的解决方案,希望它可以帮助你:) P / S你应该设置时间:10000表示观察或getcurrentpostion

答案 1 :(得分:0)

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

简而言之:当我使用 location Off 启动webapp时,我会按预期收到PositionError。

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

我已经尝试使用maps.google.com并且结果完全相同(他们显示了一个快餐栏 Google地图无法确定您的确切位置)所以我相信有没有解决方法。

ionic framework forum上有类似的帖子 - 他们也没有找到解决方案。

总结一下:

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

所以唯一有帮助的是重新加载网络应用,这会迫使Chrome再次检查位置服务是否可用。

<强>更新

这是Chromium中的已知错误:672301721977。 Chrome Mobile v59中的解决方法位于lsd-permission-prompts标记后面。

答案 2 :(得分:0)

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

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

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