我有几个GPS定位请求通过我的HTML文件嵌入在其他功能。我正面临一个问题,当应用程序打开时,如果位置未打开(或者在请求被激发后位置被关闭)。然后,我将不得不重新启动应用程序,以便位置请求再次工作。
如果它失败一次,那么即使位置被重新打开,之后的每一个请求都将是错误的。
为什么会发生这种情况?
var Geo11={};
navigator.geolocation.getCurrentPosition(success11,error11, { enableHighAccuracy: true, maximumAge: 5000, timeout: 20000 });
//Get the latitude and the longitude;
function success11(position) {
Geo11.lat = position.coords.latitude;
Geo11.lng = position.coords.longitude;
calcRoute(Geo11.lat, Geo11.lng);
}
function error11(error){
alert('Please check your GPS setting, then reload.');
}发布于 2015-07-29 08:10:09
首先,您必须进行适当的错误处理。请参见代码片段。
function(error) {
if(error.code == 0){
// unknown error
} else if(error.code == 1) {
// permission denied
} else if(error.code == 2) {
// position unavailable
} else if(error.code == 3) {
// timeout
}
console.log(error.message);
},
其次,在错误处理之后,您还必须实现重载。
注意:由于GPS是从关闭状态打开的,GPS硬件组件正在(重新)启动,并且在缺乏适当的超时和重新加载机制的情况下,它将不会按预期工作。
话虽如此。在我看来,在你的用例中,最好在调用geolocation之前向用户询问位置权限。这里有一个非常好的here示例供您参考。
另外,this answer也值得一读。
https://stackoverflow.com/questions/31672136
复制相似问题