【问题标题】:drawingManager.setDrawingMode(null) causing too much recursiondrawingManager.setDrawingMode(null) 导致递归过多
【发布时间】:2015-01-20 13:30:20
【问题描述】:

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

这不是我的小提琴,但我的代码中有这个确切的问题

【问题讨论】:

标签: jquery google-maps-api-3


【解决方案1】:

我必须承认我不太明白为什么会发生这种情况。

但下面的代码似乎可以工作:

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

    if (drawMan.getDrawingMode()) {

        drawMan.setDrawingMode(null);
    }        
});

【讨论】:

  • 闻起来有 google-bug 的味道。它发生在多边形的“叠加完成”上,但不是矩形。
  • 好收获。那么可能是一个错误。
  • 请记住 drawMan.setDrawingMode(null);将第二次触发覆盖完成,多边形完成。
  • 嗯……是的,不是的。 drawMan.setDrawingMode(null) 单独不会触发 overlaycomplete 事件。但即使drawMan.getDrawingMode() 在事件监听器内部时也会触发它。奇怪。
【解决方案2】:

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

【讨论】:

  • 确实如此,但仅在 overlaycomplete 事件侦听器内部时。
【解决方案3】:

问题在于 3.exp。现在切换到3.8,问题就解决了。

【讨论】:

    【解决方案4】:

    这段代码对我有用,但这是谷歌错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-20
      • 2023-03-23
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      相关资源
      最近更新 更多