2011-11-19 125 views
8

我爱谷歌地图V3.7新图形库,但我有感觉的文档仍然是不完整的,我有几个问题:谷歌地图V3:绘制库

  1. Documentation提及overlaycompleted{overlay}completed事件,但我也found事件drawingmode_changed事件。有没有事件清单?

  2. 有没有办法得到一个参考(对象),这是我们的除了等待,直到我们完成绘制,并使用侦听与overlaycompleted如在上面的例子完成绘制多边形?

  3. 有没有办法从多边形中删除顶点,只需点击它们?如果没有,你会怎么做呢?

回答

1

很多搜​​索这里后就是我想出了:

  1. 我便无法找到事件中的任何名单之外this。我找不到任何东西。

  2. 不,这是不可能的,但我已经把request in,我已经显示一个小的trick,它使用右键单击。不幸的是,这并不适合我,因为我需要左键点击。

我希望这可以帮助别人

2

您可以拨打任何叠加事件上完全是这样。

google.maps.event.addListener(drawingManager, 'polygoncomplete', function(e) { 
    //Your magic goes here 
}); 

overlaycomplete就像是任何覆盖,如标记,折线,圆形和多边形的全球盛会。但是如果要为特定的叠加层创建侦听器,只需将overlay更改为所需的叠加层:polygoncomplete,polylinecomplete,circlecomplete

我知道这个问题很老,但我想分享我的答案。

+0

这应该被标记为正确答案 – ADAM

1

非常古老的问题,但我有一些更新,也许会帮助某人。

  1. 有可编辑的形状可能是有用的一些额外的活动:https://developers.google.com/maps/documentation/javascript/overlays#user_editable_shapes_events

  2. 也无法找到这个解决方案。

  3. 这段代码演示了如何在左侧点击删除多边形/折线顶点:

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