Chrome:调用watchPosition后的getCurrentPosition超时

时间:2014-01-13 16:52:12

标签: javascript google-chrome geolocation

此问题发生在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才能使位置检索工作。

我错过了什么吗?

0 个答案:

没有答案