JavaScript — API Карт Google добавляет Слушатели к массиву маркеров

У меня есть карта, отображающая маркеры на основе базы данных, которые сохраняются в массиве. Теперь я хочу добавить анимацию к ним. Быстрое исследование дало мне информация об отдельных маркерах пока нет намека на то, как я мог бы выполнить эти действия с несколькими маркерами.

Будучи довольно новым для Javascript, я не совсем уверен, как это сделать.

У меня есть php на основе foreach цикл, в который добавляются маркеры. (Запросы к базе данных будут работать только с php, насколько я понимаю).

Я пробовал вставлять

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

но тогда карта даже не отображается больше.

Любые идеи и советы приветствуются! Заранее спасибо.

1

Решение

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

Другие решения

Благодаря @ 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);
});
}
0

По вопросам рекламы [email protected]