我有一个可编辑的多边形,就像这里一样。
我想要“捕捉”用户在地图上移动点的事件(以调整多边形大小)。我需要此功能来实现对点进行捕捉。
这种可能吗?
编辑
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;
});
代码可以运行,事件已被捕获。但是,我无法访问当前拖动的点以更改其位置。
我还尝试在 mousemove
事件中更改 latLng 对象,但没有效果。
临时解决方案
在多边形调整大小时,无法访问多边形 ghost,因此实现吸附的唯一解决方案是在多边形调整大小后进行。
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
});