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

时间:2015-01-20 13:30:20

标签: jquery google-maps-api-3

请查看这个小提琴,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);
});

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

4 个答案:

答案 0 :(得分:4)

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

但以下代码似乎有效:

google.maps.event.addListener(drawMan, 'overlaycomplete', function (event) {

    if (drawMan.getDrawingMode()) {

        drawMan.setDrawingMode(null);
    }        
});

答案 1 :(得分:0)

看起来像个错误。 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);
});

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

此代码适用于我,但这是google bug。

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