【问题标题】:Google Maps: Using custom buttons谷歌地图:使用自定义按钮
【发布时间】: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});
});

我希望当有人单击以制作多边形,然后他单击可拖动的多边形按钮未单击并重置功能,就像未单击它并且当用户再次单击它时功能是再次激活。

希望我解释一下,以便您了解我的问题。


更新(因为没有提出第二个问题)
我在谷歌地图上找不到redoundo 事件的控制设置。
这里应该设置的控件。

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


【解决方案1】:

在 Anto Jurković 的帮助下,我提出了一个适合我的解决方案。看到解决方案后,我觉得有点菜鸟,但就是这样。

我需要使用 新变量 以及 truefalse 语句。

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; 
     } 
});

【讨论】:

    猜你喜欢
    • 2017-12-30
    • 1970-01-01
    • 2019-12-09
    • 2012-03-07
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多