Google Maps API会将侦听器添加到标记数组中

时间:2014-11-02 07:23:34

标签: javascript php arrays google-maps google-maps-api-3

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

对Javascript来说几乎是新手,我不太清楚如何执行此操作。

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

我尝试插入

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

但是地图甚至不再显示了。

非常感谢任何想法和提示!提前谢谢。

2 个答案:

答案 0 :(得分:2)

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););
}

答案 1 :(得分:0)

感谢@ 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);
              });
          }