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