我使用GoogleMaps Javascript API V3创建了一个绘图系统,允许用户绘制和保存多边形。
我收到了一些关于由于在使用多边形绘图工具手动绘制点时意外双击而自动完成绘图的投诉。因此,我希望禁用此dblclick自动完成功能,以便只有在用户再次单击第一个点时才会完成绘图。
我尝试从地图中取消绑定dblclick事件,并尝试通过双击引发错误来停止传播dblclick事件,如下所示(仅用于测试事件调用)。
google.maps.event.addListener(map, 'dblclick', function(){
throw("stop");
});
这样可以在双击时成功停止缩放功能,但在绘制点时(无此触发此侦听器)进行dblclicking时仍会发生自动完成。我甚至尝试在整个页面上停止传播任何双击事件,但都无济于事。任何人都可以建议解除这个dblclick事件的方法,或者一个替代解决方案来阻止dblclick自动完成?
我搜索了API参考文档和论坛,但未能找到解决方案。
答案 0 :(得分:1)
完成后添加编辑按钮!
将多边形保存到“overlaycomplete”上的数组中(并同时添加编辑按钮)
var polyArray = [];
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
this.setDrawingMode(null);
var shape = e.overlay;
shape.type = e.type;
polyArray.push(shape);
shape.addListener('click', function(evt){
if (evt.vertex != null && this.getPath().getLength() > 3) {
this.getPath().removeAt(evt.vertex);
}
});
});
编辑功能:
function editFeature(id, action){
var shape = polyArray[id];
if(action) shape.setEditable(true);
else shape.setEditable(false);
}