【发布时间】:2016-01-31 17:33:18
【问题描述】:
在谷歌地图内拖动多边形时,我随机收到错误Uncaught TypeError: Cannot read property '__e3_' of null。我的意思是,大多数情况下,当我拖动多边形时会按预期工作,但很少会失败。
在 Google Chrome 控制台中,显示的错误是:
1) 错误标头:
Uncaught TypeError: Cannot read property '__e3_' of null js?libraries=drawing,geometry:87
2) 错误正文:
_.I.hasListeners @ js?libraries=drawing,geometry:87
_.I.trigger @ js?libraries=drawing,geometry:88
W1 @ poly.js:20
_.t.mm @ poly.js:82
_.I.trigger @ js?libraries=drawing,geometry:88
(anonymous function) @ js?libraries=drawing,geometry:34
_.I.trigger @ js?libraries=drawing,geometry:88
(anonymous function) @ common.js:79
_.I.trigger @ js?libraries=drawing,geometry:88
Mm @ common.js:69
(anonymous function) @ common.js:225
(anonymous function) @ common.js:225
编辑: 我没有粘贴代码块,而是提供了一个小提琴作为示例,代码可以正常工作: https://jsfiddle.net/w6Lnk47u/16/
错误似乎在这一行:
var isMarkerContained = google.maps.geometry.poly.containsLocation(CREAR_CAMP.markerWithLabelCasaClub.getPosition(), CREAR_CAMP.polygonArea);
要重现错误,必须有人:
1) 先点击左边启用的那个,然后在地图上画一个多边形。
2) 单击右侧的启用按钮(当多边形绘制完成时启用),它将在多边形内出现一个标记。现在是错误可能出现的时候。有人只需要尝试移动多边形并调整其大小(尝试将标记留在多边形区域之外),它就会在 Google Chrome 控制台中出现错误。正如我所说,它是随机发生的,而且很少发生。
【问题讨论】:
-
请提供一个Minimal, Complete, Tested and Readable example 来证明这个问题。
-
common.js:225和:79上的内容是什么?您在哪里称呼它? -
@Kenney,至少在我的 JavaScript 中,我知道我没有在外部 common.js 文件中显式调用任何匿名函数。
-
@geocodezip 我已经提供了页面的整个 JavaScript 代码。
-
有可能。你必须调试。查找堆栈跟踪的每一行的源代码,并从您自己代码中的源代码开始。您可以在 JS 控制台中设置断点。您将要使用 JS 的原始源代码,而不是为此的缩小/丑化版本。通常,此类错误来自某些返回 null 而不是预期元素的 DOM 查询。
标签: javascript google-maps-api-3