【问题标题】:Uncaught TypeError: Cannot read property '__e3_' of null未捕获的类型错误:无法读取 null 的属性“__e3_”
【发布时间】: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


【解决方案1】:

2019 年更新:我无法再次重现该问题,该错误一定已从 Google 修复。


这似乎是 Google 的一个错误。

这里是Google suggests 用于绘图的最低代码:https://jsfiddle.net/TomKarachristos/hc7nwwdx/。我只更改选项。

如果你玩得够多,你会看到触发了同样的错误,所以你的代码没有问题。

如果你不想出现这个错误你必须使用window.onerror:

window.onerror = function(msg, url, lineNo, columnNo, error) {
  #maybe some condition code
  return true; //suppress error
}

但我不推荐。

【讨论】:

  • 试试看,你小提琴中的海滩标志图标没有很好的链接,你可以把它改成google-developers.appspot.com/maps/documentation/javascript/…。我仍然无法重现该错误。你有它出现的用例吗?我尝试绘制许多形状并更改其可拖动顶点。在我的小提琴中,我想知道的一件事是,如果在循环中使用 google.maps.geometry.poly.containsLocation(randomLatLng, CREAR_CAMP.polygonArea); 会导致暂时无法访问几何库。
  • 去做一些多边形,和顶点一起玩,试着做一些奇怪的形状。我只看到了一个多边形的错误。
  • 错误捕获,我只是没有尝试足够的多边形调整大小和添加或删除顶点。谢谢,虽然我的代码有错误,但我不知道如何解决它。正如您提供的那样,我将使用window.error 来防止它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 2022-01-19
  • 2021-12-01
  • 2022-07-02
  • 2022-06-14
相关资源
最近更新 更多