Jak zachować jedno okno informacyjne otwarte w tym samym czasie na mapie Google V3?

Wiem, że to jest powtarzające się pytanie,

Korzystam z google map v3 w mojej aplikacji internetowej Django. Gdzie używamMarkers, Infowindow and polyline. Wszystko działa dobrze, z wyjątkiem jednego, gdy klikam znacznik, aby wyświetlić zawartość przez okno informacyjne, poprzednie otwarte okno informacyjne nie zostało zamknięte.

Publikuję kod mojej mapy (tylko część skryptu lub przydatne):

var marker = add_marker(flightPlanCoordinates[i][0], flightPlanCoordinates[i][1],"Event Detail",myHtml);

TutajmyHtml jest zmienną zawierającą zawartość okna Info. Tutaj nie zdefiniowałem zmiennej. Zignoruj ​​to.

    marker.setMap(map);
    }

    var flightPath = new google.maps.Polyline({
                 path: flightPlanCoordinatesSet,
                 strokeColor: "#FF0000",
                 strokeOpacity: 1.0,
                 strokeWeight: 2
                  });
    flightPath.setMap(map);
}

function add_marker(lat,lng,title,box_html) {
var infowindow = new google.maps.InfoWindow({
    content: box_html
});

var marker = new google.maps.Marker({
      position: new google.maps.LatLng(lat,lng),
      map: map,
      title: title
});

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

return marker;
}

questionAnswers(1)

QuestionSolution

Zamiast wielu infoWindows używaj tylko jednej instancji.

Po kliknięciu znacznika najpierw zamknij okno infoWindow, a następnie ustaw nową zawartość i otwórz okno infoWindow.

function add_marker(lat,lng,title,box_html) 
{
  //create the global instance of infoWindow 
  if(!window.infowindow)
  {
    window.infowindow=new google.maps.InfoWindow();
  } 

  var marker = new google.maps.Marker({
      position: new google.maps.LatLng(lat,lng),
      map: map,
      title: title
  });

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

  return marker;
}
 Amit Pal11 lip 2012, 10:20
Dzięki za odpowiedź, spróbowałem z tą opcją. ale nie działa. Może się myliłem, gdybyś mógł mi pokazać pseudo kod do dodania metody słuchacza
 Ramesh Murugesan08 lip 2015, 14:01
@ Dr.Molle Mam wiele znacznikówLatLngBounds jeśli utworzę globalną instancję infoWindow, ostatni infowinodow pokaże cały wskaźnik
 Dr.Molle08 lip 2015, 14:09
@ Blue Bells: czy możesz zamieścić link do strony?
 Dr.Molle11 lip 2012, 10:40
Zmodyfikowana funkcja add_marker powyżej powinna działać.

yourAnswerToTheQuestion