Google Maps InfoWindow не открывается при клике - PullRequest
2 голосов
/ 08 февраля 2011

У меня возникли некоторые проблемы с Google Maps API (v3) и InfoWindows нет открытия на событие щелчка маркера, к которому они прикреплены. Когда я отлаживаю javascript, маркеры и InfoWindows выглядят правильно, поэтому я предполагаю, что я делаю что-то не так при добавлении прослушивателя события click.

Ниже приведено описание добавления маркеров и т. Д. Кто-нибудь может увидеть, в чем может быть проблема?

$.post("/Club/SearchClubsByLocation", { latitude: searchLat, longitude: searchLng },
            function (clubs) {
                $.each(clubs, function (i, club) {
                    var LL = new google.maps.LatLng(club.Latitude, club.Longitude);
                    pointArray.push(LL);

                    var infoWindow = new google.maps.InfoWindow({
                        content: club.ClubName + " HELLO!!!"
                    });

                    var marker = new google.maps.Marker({
                        map: map,
                        position: LL
                    });

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

                    markerArray.push(marker);
                });

                for (i in pointArray) {
                    bounds.extend(pointArray[i]);
                }

                map.fitBounds(bounds);
                pointArray = [];
            },
            "json"
         );

Спасибо за любые предложения,

Rich

1 Ответ

10 голосов
/ 09 февраля 2011

Я наконец-то решил это, имея функцию вне функции post, которая создает InfoWindow и добавляет прослушиватель щелчков к маркеру, чтобы открыть InfoWindow

$.post("/Club/SearchClubsByLocation", { latitude: searchLat, longitude: searchLng },
  function (clubs) {
    $.each(clubs, function (i, club) {
      var LL = new google.maps.LatLng(club.Latitude, club.Longitude);
      pointArray.push(LL);

      var marker = new google.maps.Marker({
        map: map,
        position: LL
      });

      addInfoWindow(marker, club.ClubName);

      markerArray.push(marker);
    });

    for (i in pointArray) {
      bounds.extend(pointArray[i]);
    }

    map.fitBounds(bounds);
    pointArray = [];
  },
  "json"
);

function addInfoWindow(marker, content) {
    var infoWindow = new google.maps.InfoWindow({
        content: content
    });

    google.maps.event.addListener(marker, 'click', function () {
        infoWindow.open(map, marker);
    });
}

Кажется, вам нужна отдельная функциядобавить несколько информационных окон, как показано здесь

Закрытие событий

Приветствия

Rich

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...