2013-10-29 32 views
2

我们有一个由许多学生创建的校园地图。大多数情况下,它运行良好,但有一个我们无法清除的持续错误。有一个侧栏列出了地图上显示的建筑物和兴趣点,当点击该建筑物和点时,[模拟点击] [1]建筑物/坡的多边形。Google地图 - 模拟多边形点击时“b未定义”?

function sideClick(poly) { 
    google.maps.event.trigger(buildingpoi[poly],'click'); 
}; 

其中buildingpoi [i]是一个数组,其中包含有关每个多边形的信息。

无论何时触发点击,它都会引用一个名为shapeClick()的方法,它处理信息的显示和地图的重新定位,以建筑物/ poi为中心。无论是多边形本身还是侧边栏中的链接,此方法都会执行完全没有错误。

然而,当使用sideClick()函数,或当点击触发条件是所谓的代码,在谷歌API的文件出现错误,即main.js文件:

TypeError: b is undefined
...(a.Va)||b.set("poly",null)})]};function VH(a){var b=a.Se;b.b||(Q(Xe,function(c){...

这成功执行shapeClick()方法后出现错误,表明该错误存在 - 正如错误消息中所述 - 在调用shapeClick()后的某个时间点GMaps API main.js文件中。通常,这不会导致前端问题,但是当我试图包含另一个调用sideClick()的方法时,由于错误,我放置在sideClick()之后的任何代码都不会执行。

我已经尝试了一些我自己的测试/修复,但是我已经能够做的最好的事情是缩小错误触发的范围。我的搜索似乎也提出了相关但不相似的结果。我认为答案可能非常简单,但对我而言,这是难以捉摸的。

地图:https://www.beloit.edu/maps/

回答

2

虽然您没有访问event的参数shapeClick(触发事件时不提供的参数),但似乎API在内部尝试访问此参数。

该API试图读取PolyMouseEvent(这是event预计会是)的顶点属性(不要问我为什么)。

访问未定义对象的属性会导致错误,这就是消息所说的。

当你触发事件提供一个空对象作为参数:

google.maps.event.trigger(buildingpoi[poly], 'click',{}); 

...和错误就会消失(访问现有对象的未定义的属性是不是一个错误)

+0

许多感谢那个解决方案(以及关于错误的信息)。 –

0

是buildingpoi [I]正如你所说的列保持信息的多边形?还是对多边形本身的引用?

此函数需要对实际多边形的引用,如果它在数组中,则该引用很好。

相关问题