我喜欢Google Maps v3.7的新绘图库,但我觉得文档仍然不完整,我有几个问题:
Documentation仅提及overlaycompleted
和{overlay}completed
个事件,但我还found drawingmode_changed
个事件。某处有事件清单吗?
有没有办法让我们绘制的多边形的引用(对象)等到我们完成绘制它并使用overlaycompleted
的监听器,如上例所示? / p>
我们有没有办法从多边形中删除椎骨,只需点击它们?如果没有,你会怎么做呢?
答案 0 :(得分:2)
您可以像这样调用任何叠加事件。
google.maps.event.addListener(drawingManager, 'polygoncomplete', function(e) {
//Your magic goes here
});
overlaycomplete
就像任何叠加层的全局事件,例如标记,折线,圆和多边形。但是如果你想为特定的叠加层创建一个监听器,只需将overlay
更改为所需的叠加层:polygoncomplete
,polylinecomplete
,circlecomplete
。
我知道这些问题已经过时了,但无论如何我想分享我的答案。
答案 1 :(得分:1)
经过大量搜索后,我想出了:
除了this之外,我找不到任何事件列表。
我找不到任何。
不,这是不可能的,但我已经放了一个request in而且我看到了一个小trick,它使用右键单击。不幸的是,这对我来说不起作用,因为我需要左键单击。
我希望这有助于其他人
答案 2 :(得分:1)
很老的问题,但我对此有一些更新,也许会帮助某人。
可编辑的形状还有一些其他可能有用的事件:https://developers.google.com/maps/documentation/javascript/overlays#user_editable_shapes_events
也找不到解决办法。
这段代码展示了如何在左键单击中删除多边形/折线顶点:
google.maps.event.addListener(drawingManager, 'overlaycomplete', function (e) {
if (e.type !== google.maps.drawing.OverlayType.MARKER) {
// Switch back to non-drawing mode after drawing a shape.
drawingManager.setDrawingMode(null);
// Add an click event listener for newly-drawn shape
// and remove polygon vertex if it was clicked
var newShape = e.overlay;
google.maps.event.addListener(newShape, 'click', function (e) {
if (e.vertex !== undefined) {
if (newShape.type === google.maps.drawing.OverlayType.POLYGON) {
var path = newShape.getPaths().getAt(e.path);
path.removeAt(e.vertex);
if (path.length < 3) {
newShape.setMap(null);
}
}
if (newShape.type === google.maps.drawing.OverlayType.POLYLINE) {
var path = newShape.getPath();
path.removeAt(e.vertex);
if (path.length < 2) {
newShape.setMap(null);
}
}
}
});
}
});