0

Google マップを生成しようとしていますが、住所に基づいて各マーカーの座標を見つける必要があります。座標は問題ありませんが、「最後に」入力された番地の座標しか表示されません。それぞれに配列が必要です。

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>

Jクエリ:

    $("#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 に答える