我有一个地图显示基于数据库的标记,这些数据库保存在一个数组中。现在我想为它们添加一个动画。快速研究给了我information about single markers但没有暗示我如何能够对多个标记执行这些操作。
对Javascript来说几乎是新手,我不太清楚如何执行此操作。
我有一个基于php的foreach
循环,其中添加了标记。 (据我所知,数据库请求只适用于php。)
我尝试插入
google.maps.event.addListener(flightMarkers[flightMarkers.length], 'click', flightMarkers[flightMarkers.length].setAnimation(google.maps.Animation.BOUNCE););
但是地图甚至不再显示了。
非常感谢任何想法和提示!提前谢谢。
答案 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);
});
}