drawingManager.setDrawingMode(null)导致过多的递归

请查看这个小提琴, http://jsfiddle.net/HoffZ/Zu55b/

为什么它会在drawMan.setDrawingMode(null)上导致错误“过多的递归”

 drawMan.setDrawingMode(google.maps.drawing.OverlayType.POLYGON); google.maps.event.addListener(drawMan, 'overlaycomplete', function (event) { // When draw mode is set to null you can edit the polygon you just drawed drawMan.setDrawingMode(null); }); 

这不是我的小提琴,但我在我的代码中遇到了这个问题

我必须承认,我不太明白为什么会这样。

但以下代码似乎有效:

 google.maps.event.addListener(drawMan, 'overlaycomplete', function (event) { if (drawMan.getDrawingMode()) { drawMan.setDrawingMode(null); } }); 

看起来像个bug。 setDrawingMode函数似乎触发了overlaycomplete侦听器。 今天才开始发生在我身上。

MrUpsidown的回答实际上是第二次触发overlaycomplete 。 除非您需要继续倾听事件,否则您应该清除它。

 drawMan.setDrawingMode(google.maps.drawing.OverlayType.POLYGON); google.maps.event.addListener(drawMan, 'overlaycomplete', function (event) { google.maps.event.clearListener(drawMan, 'overlaycomplete'); drawMan.setDrawingMode(null); }); 

问题在于3.exp。 现在将其切换到3.8,问题将得到解决。

这段代码适合我,但这是谷歌的bug。

 if (drawManager.drawingMode) { drawManager.setDrawingMode(null); }