У меня есть карта, отображающая маркеры на основе базы данных, которые сохраняются в массиве. Теперь я хочу добавить анимацию к ним. Быстрое исследование дало мне информация об отдельных маркерах пока нет намека на то, как я мог бы выполнить эти действия с несколькими маркерами.
Будучи довольно новым для 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);
});
}