2015-07-11 81 views
-1

我想使用Google Maps地理编码API获取10,000行数据的坐标,并将每行打印到浏览器。

我的方法是循环每行(包含地址)并将其传递给Google Maps URL,然后解析这些JSON数据以获取其lat和lng。我使用jQuery。

但这里的问题似乎是异步运行。我试图使用递归,但它没有打印任何东西循环。我已阅读设置async = false,但我不知道在哪里放置它。
这里是我当前的代码使用Google地图同步获取10000个坐标

var x = 1; 
    setInterval(function(){ 
     geturl = 'parse.php?urut='+x; 
     $.get(geturl, function(get){ 
      url = get; 
     }); 
     $.getJSON(url, function(data){ 
      var lat = data.results[0].geometry.location.lat; 
      var lang = data.results[0].geometry.location.lng; 
      var nama = data.results[0].address_components[1].long_name; 
      $('table').append("<tr><td>"+x+"</td><td>"+lat+","+lang+"</td><td>"+nama+"</td></tr>"); 
     }); 
     x++; 
    }, 500); 

任何建议?

+0

是正确的? –

+0

async = false已弃用。为了让这个工作起作用,你必须在收到数据后调用结果解析。见例如https://msdn.microsoft.com/en-us/library/windows/apps/hh700330.aspx –

+0

@JaromandaX是的,确切地说。 – pacific01

回答

0

的这段代码应该表现出你,你出了错

function getCoords(x) { 
    geturl = 'parse.php?urut='+x; 
    $.get(geturl, function(url){ 
     $.getJSON(url, function(data){ 
      var lat = data.results[0].geometry.location.lat; 
      var lang = data.results[0].geometry.location.lng; 
      var nama = data.results[0].address_components[1].long_name; 
      $('table').append("<tr><td>"+x+"</td><td>"+lat+","+lang+"</td><td>"+nama+"</td></tr>"); 
     }); 
    }); 
} 

的$ .getJSON运行为$不用彷徨的成功的部分功能 - 因此它会被运行一次的$。得到的是完全

我已经证明这是一个功能,让x值将在$('table').append行,你要运行的取一前一后,正确的

+0

酷!有打印结果略过“x”的问题。但我想我可以解决它。先谢谢你。 – pacific01

+0

输出顺序取决于最终getJSON的响应顺序 - 所以,如果您启动了这些的10000个,请不要指望它们的顺序与您启动它们的顺序相同,除非您在发送下一个响应之前等待每个响应请求 –