закрытие информационного окна и переменная (Google Maps API v3) - PullRequest
1 голос
/ 22 июня 2011

У меня проблема с закрытием информационного окна при открытии нового в Google Maps API v.3.

var infowindow;
function addMarker(id, location) {
contentString = 'some content';

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

var infowindow = new google.maps.InfoWindow({
    content: contentString,
    maxWidth: 200
});

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

markersArray[id] = marker;
}

Проблема в том, что в приведенном выше коде старое информационное окно не закрывается при нажатии на новое окно, пока я не удалю var из строки var infowindow = new google.maps.InfoWindow ({ Но тогда все информационные окна имеют одинаковое содержимое ...

Любая помощь? Благодаря.

1 Ответ

2 голосов
/ 22 июня 2011

Используйте глобальную переменную для хранения указателя на последний открытый маркер, а при открытии нового закройте предыдущий. Как это

//var infowindow; // <-- removed; should not be global
var openedInfoWindow = null;  // <-- added this here; make sure it's global

function addMarker(id, location) {
    contentString = 'some content';

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

    var infowindow = new google.maps.InfoWindow({
        content: contentString,
        maxWidth: 200
    });

    google.maps.event.addListener(marker, 'click', function() {
      if (openedInfoWindow != null) openedInfoWindow.close();  // <-- changed this
      infowindow.open(map, marker); 
      // added next 4 lines
      openedInfoWindow = infowindow;
      google.maps.event.addListener(infowindow, 'closeclick', function() {
          openedInfoWindow = null;
      });
    });

    markersArray[id] = marker;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...