Google карты геокодера слишком много рекурсии с использованием ajax - PullRequest
0 голосов
/ 21 декабря 2011

Я использую геокодер Google Maps, который использует асинхронный, чтобы вернуть значения lat и lng.Работает отлично.Затем я хочу передать эти значения lat lng вызову ajax в моей базе данных для поиска.Я не могу понять, как узнать, когда выполняется асинхронная часть для запуска части AJAX.

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 Ответ

1 голос
/ 22 декабря 2011

На мой взгляд, единственное, что не так с вашим кодом, это то, что вы никогда не публикуете значения lat / lng в службу AJAX, вы только отправляете сериализованные данные формы. Я упростил ваш пример до чего-то вроде:

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);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...