Google maps 是否可以覆盖Google Maps事件的默认行为
我正在尝试对可编辑多边形的移动创建限制。我想防止内部路径被拉出外部路径。我正在使用Google Maps Google.Maps.geometry.poly.containsLocation函数检查新点是否在外部边界内,但如果在外部边界内,我找不到阻止操作发生的方法 我已尝试返回false,但多边形仍会转到新位置Google maps 是否可以覆盖Google Maps事件的默认行为,google-maps,Google Maps,我正在尝试对可编辑多边形的移动创建限制。我想防止内部路径被拉出外部路径。我正在使用Google Maps Google.Maps.geometry.poly.containsLocation函数检查新点是否在外部边界内,但如果在外部边界内,我找不到阻止操作发生的方法 我已尝试返回false,但多边形仍会转到新位置 google.maps.event.addListener(poly.getPaths().getArray()[1], 'set_at', function() { return
google.maps.event.addListener(poly.getPaths().getArray()[1], 'set_at', function() {
return keepInside(this, arguments[0], arguments[1]);
});
function keepInside(polygon, index, new_point)
{
outer_edge = new google.maps.Polygon({
paths: polygon.getArray(),
});
is_in = google.maps.geometry.poly.containsLocation(new_point,outer_edge);
if(!is_in)
{
return false;
}
return true;
}
您与原始代码非常接近。您可以将点设置回其原始位置,而不是返回false。此外,传递给位于侦听器的
set_的第二个参数不是新点,而是旧点。试试这个:
google.maps.event.addListener(poly.getPaths().getArray()[1], 'set_at', function(index, oldPoint) {
return keepInside(this, index, this.getAt(index), oldPoint);
});
function keepInside(polygon, index, newPoint, oldPoint)
{
outer_edge = new google.maps.Polygon({
paths: polygon.getArray(),
});
if(!google.maps.geometry.poly.containsLocation(newPoint, outer_edge))
{
polygon.setAt(index, oldPoint);
}
}