打开和关闭GPS时的地理定位问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打开和关闭GPS时的地理定位问题相关的知识,希望对你有一定的参考价值。
首先要提前感谢。我建立了一个网站,当您点击“导航”按钮时,可以选择将您带到特定的地方。桌面上的一切正常,当手机的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()。有任何想法吗?
我曾遇到过同样的问题,最后我找到了解决方案。你可以将getCurrentPosition改为watchPosition,看来当getCurrentPosition无法识别位置变化时,看看帮助我们做到这一点。尝试我的解决方案,希望它可以帮助你:) P / S你应该设置时间:10000表示观察或getcurrentpostion
我在android 6.0和Chrome 59.0.3071.125上遇到了同样的问题。
简而言之:当我启动一个位置为Off的webapp时,我会按预期收到一个PositionError。
但是,当我将位置切换回On时,每次对navigator.geolocation.getCurrentPosition
或navigator.geolocation.watchPosition
的后续调用都会返回相同的错误。
我和maps.google.com尝试过相同的结果是完全相同的(他们显示了一个小吃吧谷歌地图无法确定你的确切位置)所以我相信没有解决方法。
在ionic framework forum上有一个类似的帖子 - 他们也没有找到解决方案。
总结一下:
看起来Chrome正在检查页面加载时的位置服务**并且不再更新状态。
所以唯一有帮助的是重新加载webapp,迫使chrome再次检查位置服务是否可用。
更新:
这是Chromium中的一个已知错误:672301,721977。在lsd-permission-prompts
标志后面的Chrome Mobile v59中提供了解决方法。
在您的错误函数中,缺少参数。
function geoError(error){
//code goes here
}
资料来源:https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation_error
以上是关于打开和关闭GPS时的地理定位问题的主要内容,如果未能解决你的问题,请参考以下文章