5

GoogleMapsv3.9でポリゴンを編集するための簡単なスナップ関数を書こうとしています

マップ上に複数のポリゴンがあり、一度に1つずつ編集可能にできます。編集可能になったら、それにリスナーを追加して、頂点がドラッグされたときにトリガーします。

のドラッグイベントがないため、頂点がカーソルの下にあるかどうかを確認google.maps.Polygonするリスナーを追加し、ある場合はリスナーを追加します。このリスナー内のコードは、他のすべてのポリゴンの頂点をチェックし、一致するものが見つかった場合はドラッグする頂点を更新します。mousedownmouseupmouseup

これは、1つの問題を除いて、うまく機能します。チェックは、リスナーから返されたlatLngプロパティを使用して実行されます。このプロパティは、ドラッグされる前の頂点の位置を示しており、新しい位置で頂点を参照する方法が見つかりません。PolyMouseEventmouseup

dragListener = google.maps.event.addListener( poly1, "mousedown", function( dragData ) {

    // if dragging a vertex
    if ( dragData.vertex != null ) {

        // perform snap on mouseup
        snapListener = google.maps.event.addListener( poly1, "mouseup", function( mouseData ) {
            var editingVertex = mouseData.vertex;
            var draggedLatLng = mouseData.latLng;

            // code here to compare draggedLatLng with latLng of editingVertex
            // and perform snap, which seems to work fine as is...
        }
    }
}
4

1 に答える 1