2012-04-01 9 views
0

ジオコーディングと逆ジオコーディングでルートシャワーを作成しています。 かなりうまくいきますが、マーカーをドラッグしたいときは、適切な入力を更新されたアドレスで更新したいと思います。問題は、開始点と終了点を区別できないことです。次のコードでは、私は1ポイントしか持っていないので、開始アドレスを正しく更新しますが、別のポイントを追加した後、両方とも同じ入力を更新し始めます。 (私はプロパティでそれらを区別する良いアイデアがあったかどうかわからない - それらのポイントを配列に追加し、その長さに応じて '開始'または '停止'でプロパティの宛先を追加する必要があります。以前の宛先値を更新します)。マーカーを区別するapi v3

function placeMarker(location) { 
if(list.length < 2) { 
    marker = new google.maps.Marker({ 
     position: location, 
     map: map, 
     draggable:true, 
     animation: google.maps.Animation.DROP, 
     destination: 'start' 
    }); 
    map.setCenter(location); 
    list.push(marker); 
    if (list.length == 2) { 
     list[1].destination = 'stop'; 
    }; 
    geocoder.geocode({'latLng': location}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (results[0]) { 
       if(list.length == 1) { 
        $('#start').val(results[0].formatted_address); 
       } else { 
        $('#end').val(results[0].formatted_address); 
       } 
      } 
     } 
    }); 
} 
if (list.length == 2) { 
    drawRoute(list[0].getPosition(), list[1].getPosition()); 
}; 
google.maps.event.addListener(marker, 'drag', function(event) { 
    console.log(marker.destination); 
    geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (marker.destination == 'start') { 
       $("#start").val(results[0].formatted_address); 
      } else { 
       $("#end").val(results[0].formatted_address); 
      } 
     } 
    }); 
}); 
}; 

ありがとうございます!

答えて

0

あなたは

google.maps.event.addListener(list[0], 'drag', function(event){...}) 
google.maps.event.addListener(list[1], 'drag', function(event){...}) 

ような何かを行う必要があり、それらのリスナーはマーカーが作成されるたびに添付しなければならない代わりに

google.maps.event.addListener(marker, 'drag', function(event){...}) 

の、唯一のマーカーにイベントリスナーをアタッチしています。

関連する問題