2012-03-31 3 views

답변

1

이유 인 구글 API를 호출은 비동기이고 코드는 시간 당신의 doc.ready 방법으로 를 반환

calcRoute이 500ms로 소요

즉 'DIST'값을 채우는 호출이 반환하기 전에 실행하는 그 호출이 이미 실행 된 후에.

두 번째 시간이 표시되는 값이

를 해결하려면 첫 번째 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

+0

directionsService.route에 대한 설명서를 확인하십시오. directionsService.route (request, function, function) 메서드 서명이 있습니다. 두 번째 함수는 onComplete입니다. 찾고있는 설명서에서 비동기 호출 완료시 함수를 실행하는 방법을 확인하십시오. –

+0

위의 cmment를 무시합니다. 수정판을 포함하도록 수정했습니다. –