Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 谷歌地图地理编码器使用ajax的递归太多_Google Maps_Jquery_Google Maps Api 3_Geocoding - Fatal编程技术网

Google maps 谷歌地图地理编码器使用ajax的递归太多

Google maps 谷歌地图地理编码器使用ajax的递归太多,google-maps,jquery,google-maps-api-3,geocoding,Google Maps,Jquery,Google Maps Api 3,Geocoding,我正在使用谷歌地图地理编码器,它使用一个异步函数返回lat和lng值。它工作得很好。然后,我想将这些lat lng值传递给一个ajax调用,以对我的数据库进行搜索。我不知道如何知道异步部分何时完成,然后运行ajax部分 运行时,lat和lng始终为空 有更好的方法吗 function getLatLng(address, fn){ geocoder.geocode( { 'address': address}, function(results, status) { fn(resu

我正在使用谷歌地图地理编码器,它使用一个异步函数返回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 函数getLatLng(地址,fn){ geocoder.geocode({'address':address},函数(结果,状态){ fn(结果[0].geometry.location.lat(),结果[0].geometry.location.lng()); }); } getLatLng(地址、功能(lat、lng){ var formData=$('#form').serialize(); 如果(纬度!=''&&lng!=''){ $.ajax({ 类型:“POST”, url:“/\u模板/map\u ajax”, 数据类型:'json', 数据:formData, 错误:函数(){ $(“#状态”).text('Update failed.Try')).slideDown('slow'); }, 成功:函数(formData){ 构建标记(formData); } });//关闭 } }); // 关闭getLatLng
在我看来,您的代码唯一的错误是您从未将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);
  }
});