谷歌地图API将监听器添加到标记数组中


Google Maps API add Listeners to an array of markers

我有一个地图,显示基于保存在数组中的数据库的标记。现在我想为它们添加一个动画。快速研究给了我关于单个标记的信息,但没有提示我如何对多个标记执行这些操作。

作为Javascript的新手,我不太确定如何执行此操作。

我有一个基于php的foreach循环,其中添加了标记。(据我所知,数据库请求只适用于php)。

我试着插入

google.maps.event.addListener(flightMarkers[flightMarkers.length], 'click', flightMarkers[flightMarkers.length].setAnimation(google.maps.Animation.BOUNCE););

但是随后甚至不再显示地图。

任何想法和提示都将不胜感激!提前谢谢。

flightMarkers.length包含flightMarkers中的项目数。

所以当你有

flightMarkers = new Array();
flightMarkers[ 0 ] = "value";
flightMarkers[ 1 ] = "value";
flightMarkers[ 2 ] = "value";

flightMarkers.length将包含数字3,但该数组中的最后一个索引是2。当您在本例中键入flightMarkers[flightMarkers.length]时,它将是未定义的flightMarkers[3]

若要仅将侦听器添加到最后一个标记,请使用flightMarkers[flightMarkers.length - 1]。如果您想将侦听器添加到每个标记,请使用for循环:

for( var i = 0; i < flightMarkers.length; i++ ) {
    google.maps.event.addListener(flightMarkers[i], 'click', 
    flightMarkers[i].setAnimation(google.maps.Animation.BOUNCE););
}

感谢@Dr.Molle和@Lukas Kovac这就是工作原理:

 for (var i = 0; i < flightMarkers.length; i++) {
              google.maps.event.addListener(flightMarkers[i], 'click',
              function () {
                  this.setAnimation(google.maps.Animation.BOUNCE);
              });
          }