此问题发生在Google Chrome上:
如果我只是使用getCurrentPosition,那就完美了。
但是,如果我先调用watchPosition然后尝试使用getCurrentPosition,它会超时。 以下是代表问题的jsfiddle:http://jsfiddle.net/Js6sm/
function watchLocation(callback)
{
if (navigator.geolocation)
{
navigator.geolocation.watchPosition(function(pos){
showPosition(pos);
callback(pos);
}, function(err){
alert(err.message);
}, {
timeout: 2000
});
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function getLocation(callback)
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(pos){
showPosition(pos);
callback(pos);
}, function(err){
alert(err.message);
}, {
timeout: 2000
});
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
alert("Latitude: " + position.coords.latitude +
"\r\n"
+"Longitude: " + position.coords.longitude);
}
getLocation(function(){
alert(0);
window.setTimeout(function(){
watchLocation(function(){
alert(1);
window.setTimeout(function(){
getLocation(function(){
alert(2);
});
}, 1000);
});
}, 1000);
});
在我看来,我首先需要调用clearWatch才能使位置检索工作。
我错过了什么吗?