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

问题描述 投票:2回答:3

首先要提前感谢。我建立了一个网站,当您点击“导航”按钮时,可以选择将您带到特定的地方。桌面上的一切正常,当手机的GPS启用时,一切正常。

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

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

我在$('。button')上执行此操作。单击()。不在$(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(),得到true然后停止。它不会进入getCurrentPosition()。有任何想法吗?

javascript html5 gps geolocation w3c-geolocation
3个回答
0
投票

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


0
投票

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

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

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

我和maps.google.com尝试过相同的结果是完全相同的(他们显示了一个小吃吧谷歌地图无法确定你的确切位置)所以我相信没有解决方法。

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

总结一下:

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

所以唯一有帮助的是重新加载webapp,迫使chrome再次检查位置服务是否可用。


更新:

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


0
投票

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

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

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

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