2013-01-13 11 views
6

私のコードをクリックしてlatを検索すると、それは正常に動作します。単一のイベントリスナーで 'クリック'と 'ドラッグ'を組み合わせることが可能かどうか疑問に思っています。適切な選択肢は何ですか?Googleマップapiv3 'click'と 'dragend'単一のリスナー

これは私が取り組んできたことです。

google.maps.event.addListener(map,'click', function(event) { 
    document.getElementById("latbox").value = event.latLng.lat(); 
    document.getElementById("lngbox").value = event.latLng.lng(); 
    addMarker(event.latLng); 
    }); 
} 

function addMarker(location) { 

if (!marker) { 

    marker = new google.maps.Marker({ 
    position: location, 
    map: map, 
    draggable:true, 
    animation: google.maps.Animation.DROP 
    }); 
} 
// Otherwise, simply update its location on the map. 
else { marker.setPosition(location); } 
} 

私はこれをやってみましたが、google.maps.event.addListener(map,'click','dragend', function(event)は役に立たなかったです。このmarker.setPosition(location);animation: google.maps.Animation.DROPに変更する考えを持っている人もいます。 。前もって感謝します。

答えて

7

複数のイベントに対してリスナーを適用する組み込みメソッドはありません。

コールバック関数を2回定義したくない場合は、非匿名関数を使用するか、1イベントのリスナーを定義し、他のイベントが発生したときにイベントをトリガーします。

アニメーションに関連
google.maps.event.addListener(map, 'click', 
           function(e){ alert('clicked or dragged');}); 
google.maps.event.addListener(map, 'dragend', function(){ 
           google.maps.event.trigger(this, 'click');}); 


代わりのマーカーのオプションを設定するためのマーカー-方法(setAnimation、setPosition)を使用して、あなたはまた、一度に複数のオプションを設定する方法はsetOptionsを使用することがあります。

marker.setOptions({ position : location, 
        animation : google.maps.Animation.DROP}); 
+0

ありがとう、あなたはハチありますn大きな助けのn。それらのテクニックを使用します。 –

関連する問題