@Qumbeez

Не работает Infowindow Google Maps?

// Markers
        var jsonMarkers = <?php echo json_encode($our_offices); ?>;
        var markers = [];
        var markersPopup = [];
        var markersPopupContent = [];

        for (var i = 0; i < jsonMarkers.length; i++) {
          markers[i] = new google.maps.Marker({
            position: { lat: parseFloat(jsonMarkers[i][0].lat), lng: parseFloat(jsonMarkers[i][0].lng) },
            title: jsonMarkers[i][0].title,
            map: map,
          });

          markersPopupContent[i] = jsonMarkers[i][0].title;

          markersPopup[i] = new google.maps.InfoWindow({
            content: 'dwadawdawdwa',
          });
          
          markers[i].addListener('click', function() {
            markersPopup[i].open(map, markers[i]);
          });
        };


При клике на маркер на карте выдаёт ошибку i.imgur.com/GZAgVva.png
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
У вас на момент клика переменная i будет равна jsonMarkers.length и поэтому markersPopup[i] будет undefined (индексы в массиве с 0 стартуют). Вас может спасти замыкание типа этого
markers[i].addListener('click', (function(i) {
  return function() {
    markersPopup[i].open(map, markers[i]);
  };
})(i));

Живой пример
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы