JavaScript — добавить слушатель маркера для всех маркеров в цикле

Я создал веб-сайт с картой с использованием API JavaScript Карт Google. Я использую PHP для вызова $ строк из базы данных Google BigQuery. Я хочу добавить слушателя ко всем маркерам на карте. В настоящее время любой нажатый маркер переходит к последнему маркеру, как если бы он проходил через все оставшиеся маркеры к последнему маркеру.

foreach ($rows as $row) {

?>
var contentString = "<h1><?php echo str_replace('"', "'", $row['f'][2]['v']); ?></h1>";
var infowindow = new google.maps.InfoWindow({
content: contentString
});

var geolocate = new google.maps.LatLng(<?php echo $row['f'][0]['v']; ?> , <?php echo $row['f'][1]['v']; ?>);

var marker = new google.maps.Marker({
map: map,
position: geolocate,
icon: '/img/Toilet.png',
title: "<?php echo str_replace('"', "'", $row['f'][2]['v']); ?>"                        //String Replace
});

marker.addListener('click', function() {
infowindow.open(map, marker);
});

Я представляю, что marker.addListener нужен указатель на индекс массива, но я не могу разобраться, что мне делать?

0

Решение

Вы можете использовать шаблон IIFE. Пожалуйста, посмотрите на

https://en.wikipedia.org/wiki/Immediately-invoked_function_expression

В этом случае ваш код будет выглядеть примерно так:

<?php
foreach ($rows as $row) {
?>
(function() {
var contentString = "<h1><?php echo str_replace('"', "'", $row['f'][2]['v']); ?></h1>";
var infowindow = new google.maps.InfoWindow({
content: contentString
});

var geolocate = new google.maps.LatLng(<?php echo $row['f'][0]['v']; ?> , <?php echo $row['f'][1]['v']; ?>);

var marker = new google.maps.Marker({
map: map,
position: geolocate,
icon: '/img/Toilet.png',
title: "<?php echo str_replace('"', "'", $row['f'][2]['v']); ?>"                        //String Replace
});

marker.addListener('click', function() {
infowindow.open(map, marker);
});
})();
<?php
}
?>
1

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

Других решений пока нет …

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