0

我被这个问题困住了:我想检索由地理位置定义的位置,以便在我的 calcRoute 函数中使用它作为起点,例如,这里是代码:

function calcRoute(){
   var pos;

    navigator.geolocation.getCurrentPosition
    (
        function(position) 
        {
            pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
        }
    );

    var start = pos;
    alert(start); // pb here : start is undefined, how could I get the pos value ?
    //...
}

非常感谢你的帮助!

4

3 回答 3

2

您定义的函数是一个回调函数,一旦检索到该位置就会被调用。

它会失败有两个原因:

  • 您根本不知道回调函数是否会被调用,更不用说在其余部分之前calcRoute(这实际上是极不可能的,因为它是异步的)
  • 即使它是在结束之前调用的calcRoutepos它也在不同的范围内,所以你不能以这种方式改变它。

您可能很想诉诸全局变量来解决第二个问题,但您将无法解决第一个问题。为什么不将其余代码放在回调函数中?

function calcRoute(){
  navigator.geolocation.getCurrentPosition
  (
      function(position) 
      {
          var pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
          var start = pos;
          alert(start);
      }
  );

}

编辑:更详细的答案来解释为什么走这条路

于 2013-04-10T09:14:35.787 回答
0

因为它是一个回调,它将在稍后执行。但是你可以定义你的代码并让它执行。

function calcRoute(){

    navigator.geolocation.getCurrentPosition
    (
        function(position) 
        {
           var pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
           furtherCode(pos);
        }
    );

    }

function furtherCode(position){
    var start = pos;
    alert(start); 
    //...
}
于 2013-04-10T09:20:37.363 回答
0
function calcRoute(){
var pos;

navigator.geolocation.getCurrentPosition
(
    function(position) 
    {
        pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
        var start = pos;
        alert(start);
    }
);


//...
}
于 2013-04-10T09:15:58.693 回答