JavaScript: avere una sola InfoWindow aperta alla volta nelle Google Maps

JavaScript: avere una sola InfoWindow aperta alla volta nelle Google Maps

La procedura per avere una sola InfoWindow aperta alla volta nelle Google Maps è semplice.

Si tratta di istanziare una sola volta l'oggetto InfoWindow:


var infowindow = new google.maps.InfoWindow(); // Una sola istanza di InfoWindow

var addToMap = function( obj, m ) {
    var content =  obj.name;
    
    var options = {
        position: new google.maps.LatLng( parseFloat( obj.lat ), parseFloat( obj.lng ) ),
        map: m
    };

    var marker = new google.maps.Marker( options );


    google.maps.event.addListener(marker, "click", function() {

        infowindow.setContent( content ); // Il contenuto della InfoWindow cambia dinamicamente
        infowindow.open( m, marker );
    });
};

var mapOptions = {
  zoom: 10,
  center: new google.maps.LatLng( -33.890542, 151.274856 ),
  mapTypeId: google.maps.MapTypeId.ROADMAP,
  scrollwheel: false
};

var map = new google.maps.Map( document.querySelector( "#map" ), mapOptions );

var places = [
  {
    name: "A",
    lat: -33.923036,
    lng: 151.259052
  },
  {
    name: "B",
    lat: 34.028249,
    lng: 151.157507
  },
  {
    name: "C",
    lat: 33.950198,
    lng: 151.259302
  }

];

places.forEach(function( place ) {
  addToMap( place, map );
});

Torna su