【发布时间】:2013-12-17 15:54:26
【问题描述】:
我正在使用带有 google maps api v3 的自定义控件。 在网上搜索并阅读 Api v3 的文档。
但是我被一个按钮卡住了,当点击它时它不会被取消点击。这是我点击的按钮。
google.maps.event.addDomListener(controlUI, 'click', function() {
drawingManager.setDrawingMode(google.maps.drawing.OverlayType.POLYGON);
});
但是当我点击另一个自定义按钮时,它仍然在前一个按钮上处于活动状态。
google.maps.event.addDomListener(controlUI, 'click', function() {
map.setOptions({draggable: true});
});
我希望当有人单击以制作多边形,然后他单击可拖动的多边形按钮未单击并重置功能,就像未单击它并且当用户再次单击它时功能是再次激活。
希望我解释一下,以便您了解我的问题。
更新(因为没有提出第二个问题)。
我在谷歌地图上找不到redo 和undo 事件的控制设置。
这里应该设置的控件。
google.maps.event.addDomListener(controlUI, 'click', function() {
//something like CTRL + z (on windows) redo or undo of the user steps (while drawing a polygon)
});
【问题讨论】:
-
点击第二个按钮时是否要退出绘图模式?如果是这样,那么您必须在第二个事件处理程序中使用
drawingManager.setDrawingMode(null);。 -
是的!我已将其添加到我的一个处理程序中,并且效果很好!但是如何将它用于同一个按钮?所以当你第一次点击时,当你再次点击同一个图标时,你可以绘制一个多边形byut,你会得到
drawingManager.setDrawingMode(null);?\ -
设置事件处理程序时,保存一个句柄。激活后,将其删除。像这样的东西:
var handle = google.maps.event.addDomListener(controlUI, 'click', function() { google.maps.event.removeListener(handle); drawingManager.setDrawingMode(google.maps.drawing.OverlayType.POLYGON); google.maps.event.addDomListener(controUI, 'click', function() { map.setOptions({draggable: true}); }); });所以你马上把它改成别的东西。 -
我把它弄混了。第二个处理程序应将绘图设置为空。错误的剪切和粘贴
-
太棒了!我没想到的菜鸟!很简单,但我想得很辛苦!
var drawPoly = false; google.maps.event.addDomListener(controlUI, 'click', function() { if(drawPoly == false){ drawingManager.setDrawingMode(google.maps.drawing.OverlayType.POLYGON); drawPoly = true; }else{ drawingManager.setDrawingMode(null); drawPoly = false; } });
标签: javascript html google-maps-api-3 controls