0

我正在尝试生成谷歌地图,并且需要根据街道地址找到每个标记的坐标。它发现坐标很好,但它只给我“最后”输入的街道地址的坐标。我需要为每个人准备一个数组。

HTML:

<div class="gmapItems">
<input type="text" class="input-medium googleMapCity" value='New York'>
<input type="text" class="input-medium googleMapAddress">
<textarea class="input-medium googleMapInformation" value='1'></textarea>
</div>

<div class="gmapItems">
<input type="text" class="input-medium googleMapCity" value='Boston'>
<input type="text" class="input-medium googleMapAddress">
<textarea class="input-medium googleMapInformation" value='1'></textarea>
</div>

查询:

    $("#AddGoogleMap").on('click', function () {            
    mapMarkers = new Array();
    $('.gmapItems').each(function(){
    gmapInfo = $('.googleMapInformation',this).val();       

    geocoder = new google.maps.Geocoder();
    address = $('.googleMapCity',this).val(), $('.googleMapAddress',this).val();

    geocoder.geocode( { 'address': address}, function(results, status) {

          if (status == google.maps.GeocoderStatus.OK) {
        latitude = results[0].geometry.location.lat();
        longitude = results[0].geometry.location.lng();
        LatLng = new google.maps.LatLng(latitude , longitude);
      }
    }); 

    mapMarkers.push("["+"'"+gmapInfo+"'", latitude, longitude+"]"); 
    });
    alert(mapMarkers)
4

1 回答 1

1

地理编码是异步的。您需要使用回调例程中的数据(如果可用)。如果你以合理的方式缩进你的代码,你可以看到它在哪里:

$("#AddGoogleMap").on('click', function () {            
  mapMarkers = new Array();
  $('.gmapItems').each(function(){
  gmapInfo = $('.googleMapInformation',this).val();       

  geocoder = new google.maps.Geocoder();
  address = $('.googleMapCity',this).val(), $('.googleMapAddress',this).val();

  geocoder.geocode( { 'address': address}, function(results, status) {

    if (status == google.maps.GeocoderStatus.OK) {
      latitude = results[0].geometry.location.lat();
      longitude = results[0].geometry.location.lng();
      LatLng = new google.maps.LatLng(latitude , longitude);
      mapMarkers.push("["+"'"+gmapInfo+"'", latitude, longitude+"]"); 
    } else {
      alert("Geocoding failed: " + status);
    }
  }); 
});

alert(mapMarkers)在所有结果都从 Google 的服务器返回之后,在您当前的代码中执行之后,您才有意义。

于 2013-05-16T12:36:52.583 回答