hereのように、編集可能な Polygon があります。
ユーザーがマップ上でドットを移動しているときにイベントを「キャッチ」したい (ポリゴンのサイズを変更する)。ポイントへのスナップを実装するには、この機能が必要です。
出来ますか?
編集
this.polygon = new google.maps.Polygon({
map: map,
strokeWeight: 2,
editable: true,
path: this._path
});
var dragging = false;
google.maps.event.addListener(this.polygon, 'mousedown', function (event) {
if (event.vertex) {
dragging = true;
}
});
google.maps.event.addListener(this.polygon, 'mousemove', function (event) {
if (dragging) {
// dragging
}
});
google.maps.event.addListener(this.polygon, 'mouseup', function (event) {
dragging = false;
});
コードは機能しており、イベントがキャッチされています。ただし、現在ドラッグされているポイントにアクセスしてその位置を変更することはできません。
イベント内でlatLngmousemove
オブジェクトを変更することも試みましたが、効果はありませんでした
一時的な解決策
サイズ変更中はポリゴン ゴーストにアクセスできないため、スナップを実装する唯一の解決策は、ポリゴンのサイズが変更された後に行うことです。
this.polygon = new google.maps.Polygon({
map: map,
strokeWeight: 2,
editable: true,
path: this._path
});
var path = this.polygon.getPath();
google.maps.event.addListener(path, 'set_at', function (event) {
// Here do the snapping, after the polygon has been resized
});
google.maps.event.addListener(path, 'insert_at', function (event) {
// Here do the snapping, after the polygon has been resized
});