我经常收到如下所示的 GMaps API javascript 异常:
- Ve.k 为 null 或不是对象(FF 和 IE)
- b.k 为 null 或不是对象(FF 和 IE)
- a 为空 (FF)
- a.$e 未定义 (FF)
- 未捕获类型错误:无法读取未定义的属性“k”(chrome)
在 GMaps API 内部对 javascript 中的某些表达式进行评估时,通常会发生异常
几乎任何事情都可能导致其中之一弹出,例如在 map 上显示叠加层或鼠标单击事件。
我已经搜索代码一段时间了,寻找有问题的覆盖层和事件处理程序,但到目前为止还没有发现任何关系。我在没有覆盖层或处理程序处于事件状态的裸 map 上发生过这种情况。
某些版本的 API 不会在某些浏览器上崩溃,但它时好时坏,我仍然深深怀疑环境中的某些东西给 GMaps 带来了困难(例如,也许 Facebook Connect、Google Analytics、我的代码) ...)
有人知道造成这些的原因吗?
最佳答案
在花了相当多的时间逐一回滚影响 map 的操作之后,我终于找到了导致此问题的行。
首先,如果我删除了对 setUIToDefault() 的调用,问题就消失了,这对我来说是 Not Acceptable ,因为我想要默认的 UI,而且这是解决问题的蹩脚方法。后来进行了很多映射操作,我来到了 GWT 调用:
mapWidget.setHeight()
mapWidget.setWidth().
对于那些不熟悉 GWT 的人来说,这两个调用最终将转换为以下 javascript 模板调用:
element.style['height'] = height;
本例中的“element”是包含 map 的 div,表达式右侧的高度类似于“690px”。
这就是导致 map API 脱轨的全部原因。
修复?在实例化 map 之前设置 map div 的大小。
你告诉我,是 map API 中的错误还是只是缺少主要功能?我要和 map 人员核实一下。
关于javascript - 是什么导致 Google map javascript 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1141126/