2011-12-21 2 views
0

나는 위도와 lng 값을 반환하는 비동기를 사용하는 구글지도 지오 코더를 사용하고 있습니다. 그것은 완벽하게 작동합니다. 그런 다음 위도 lng 값을 검색 할 데이터베이스에 아약스 호출에 전달하려고합니다. 비동기 부분을 수행 한 후 ajax 부분을 실행할 때를 아는 방법은 알 수 없습니다.Google지도 geocoder 너무 많은 재귀를 사용하여 아약스

lat 및 lng는 실행시 항상 비어 있습니다.

더 좋은 방법이 있나요? 내가보기로

 

function getLatLng(address, fn){ 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    fn(results[0].geometry.location.lat(),results[0].geometry.location.lng()); 
    }); 
} 

getLatLng(address, function(lat,lng){ 

     var formData = $('#form').serialize();  

     if (lat!='' && lng!='') { 
       $.ajax({ 
       type: "POST", 
       url: "/_templates/map_ajax", 
       dataType:'json', 
       data: formData, 
       error: function() { 
       $('#status').text('Update failed. Try again.').slideDown('slow'); 
       }, 
       success: function(formData) {                
       buildMarkers(formData);    
       }         
      });  //ajax close  
     } 

}); // close getLatLng 

답변

1

, 당신의 코드를 잘못 유일한 것은 당신이, 당신은 단지 직렬화 된 양식 데이터를 보내는 당신의 AJAX 서비스에 대한 위도/LNG 값을 게시하지 않을 것입니다. 저는 여러분의 모범을 다음과 같이 단순화했습니다 :

function getLatLng(address, fn){ 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    fn(results[0].geometry.location.lat(),results[0].geometry.location.lng()); 
    }); 
} 

getLatLng("new york", function(lat,lng){ 
    if (lat!='' && lng!='') { 
    console.log(lat); 
    console.log(lng); 
    } 
});