您好我有一个名为regionPolygons
的Google地图多边形数组。现在我希望每次单击多边形时,我的地图都会将其中心设置为多边形的中心。
这是我实现它的方式。
for (i = 0; i < regionPolygons.length; i++) {
google.maps.event.addListener(regionPolygons[i], 'click', function () {
// do the stuff, things seem ok here
}
}
现在无论我点击哪个多边形,我都会被带到最后一个多边形的中心。 如何让谷歌现在映射哪个多边形被点击? 谢谢
修改:我的问题是重复的。似乎将相同的代码复制到新的功能工作。似乎Javascript在从主程序传递到子程序时创建变量的新副本。任何人都可以帮我解释一下吗?
答案 0 :(得分:1)
Google将点击的多边形作为this
或event.target
提供给事件处理程序是明智的,但API文档没有提供实际完成的线索。一定要试试。
如果这些建议都不起作用,那么您可以利用闭包来保留i
的副本,如下所示:
for(var i=0; i<regionPolygons.length; i++) {
google.maps.event.addListener(regionPolygons[i], 'click', (function(i) {
return function() {
var polygon = regionPolygons[i];
//do stuff here with `polygon`
};
})(i));
}
或者,您可以使用相同的技术来保持对多边形对象本身的引用:
for(var i=0; i<regionPolygons.length; i++) {
var p = regionPolygons[i];
google.maps.event.addListener(p, 'click', (function(polygon) {
return function() {
//do stuff here with `polygon`
};
})(p));
}
净效果是一样的;在事件处理程序中,您最终会得到对单击多边形的引用。