6

クリックして緯度と経度を取得するために私のコードで作業していると、正常に動作します。単一のイベントリスナーで「クリック」と「ドラッグ」を組み合わせることが可能かどうか疑問に思います。適切な代替案をいただければ幸いです。

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

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。。前もって感謝します。

4

1 に答える 1

9

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

コールバック関数を 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');} );

アニメーション関連:
marker-methods(setAnimation,setPosition) を使用してマーカー オプションを設定する代わりに、メソッド setOptions を使用して一度に複数のオプションを設定することもできます。

marker.setOptions({ position  : location,
                    animation : google.maps.Animation.DROP});
于 2013-01-13T14:15:38.220 に答える