2012-03-31 144 views

回答

1

的原因是,在調用谷歌API是異步的,你的代碼中調用返回填充即

的「DIST」值

calcRoute需要500毫秒之前執行由時間 你doc.ready方法返回 在那個通話已經執行之後。

你看到的價值,第二次就是你看到的值是第一個calcRoute調用的結果

要修正的原因:

簡單的線條修正

$(document).ready(function(){ 
      $("#send").click(function(event){ 
        calcRoute(); 
      }); 

    }); 

    function calcRoute() { 
     var start = document.getElementById("from").value; 
     var end = document.getElementById("to").value; 
     var ret = 0; 
     var request = { 
      origin:start, 
      destination:end, 
      travelMode: google.maps.TravelMode.DRIVING 
     }; 
     directionsService.route(request, function(result, status) { 
      //this is the onComplete method so do your UI amendments from in here 
      if (status == google.maps.DirectionsStatus.OK) { 
       directionsDisplay.setDirections(result); 
       dist = result.routes[0].legs[0].distance.value; 
       $("#result").html(dist); 
      }else{ 
        alert("Error"); 
      } 
     }); 

    } 
+0

哪有我修復它? – MBraiN 2012-03-31 21:51:17

+0

檢查文件directionsService.route我敢打賭,它有方向簽名的directionsService.route(request,function,function)...第二個函數是onComplete。檢查正在尋找異步調用完成功能的文檔 – 2012-03-31 21:55:38

+0

ignore above cmment我正在修改包含修復的答案 – 2012-03-31 22:01:20