GoogleMapsv3.9でポリゴンを編集するための簡単なスナップ関数を書こうとしています
マップ上に複数のポリゴンがあり、一度に1つずつ編集可能にできます。編集可能になったら、それにリスナーを追加して、頂点がドラッグされたときにトリガーします。
のドラッグイベントがないため、頂点がカーソルの下にあるかどうかを確認google.maps.Polygon
するリスナーを追加し、ある場合はリスナーを追加します。このリスナー内のコードは、他のすべてのポリゴンの頂点をチェックし、一致するものが見つかった場合はドラッグする頂点を更新します。mousedown
mouseup
mouseup
これは、1つの問題を除いて、うまく機能します。チェックは、リスナーから返されたlatLng
プロパティを使用して実行されます。このプロパティは、ドラッグされる前の頂点の位置を示しており、新しい位置で頂点を参照する方法が見つかりません。PolyMouseEvent
mouseup
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...
}
}
}