Search code examples
javascriptarraysgoogle-mapsgoogle-maps-api-3infowindow

add Infowindow to array markers refreshing every 5 seconds Google map


I have followed this example (http://jsfiddle.net/upsidown/p646xmcr/) to refresh the markers' location every 5 seconds on my map. Now I don't understand how I can add an infowindow to every marker I have with a different variable le't say time and geolocation (or just a 5th element of the beaches array).

var map;
var markers = []; // Create a marker array to hold your markers
function initialize() {
    var mapOptions = {
        zoom: 5,
        center: new google.maps.LatLng(10,12),
        mapTypeId: google.maps.MapTypeId.SATELLITE
    }

    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

    setMarkers(beaches);

    // Bind event listener on button to reload markers
    //document.getElementById('reloadMarkers').addEventListener('click', reloadMarkers);
}

var n = 0;
setInterval(function reloadMarkers() {
  n++;
  var beaches = [
        ['Bondi Beach', 10+n, 10+n, 5],
        ['Coogee Beach', 10-n, 11-n, 5],
        ['Cronulla Beach', 10-n, 12+n, 3],
        ['Manly Beach', 10+n, 13-n, 2],
        ['Maroubra Beach', 10, 14, 1]
    ];
    // Loop through markers and set map to null for each
    for (var i=0; i<markers.length; i++) {
        markers[i].setMap(null);
    }
    // Reset the markers array
    markers = [];
    // Call set markers to re-add markers
    setMarkers(beaches);

      var infowindow = new google.maps.InfoWindow({
        content: "infowindowstringg"
      });
    marker.addListener('click', function() {
        infowindow.open(map, marker);
      });

}, 5000);

function setMarkers(locations) {
    for (var i = 0; i < locations.length; i++) {
        var beach = locations[i];
        var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
        var marker = new google.maps.Marker({
            position: myLatLng,
            map: map,
            animation: google.maps.Animation.DROP,
            title: beach[0],
            zIndex: beach[3]
        });
        google.maps.event.addListener(marker, 'click', )
        // Push marker to markers array
        markers.push(marker);
    }
}



initialize();

Solution

  • Define the infowindow variable in SetMarkers()

    var infowindow = new google.maps.InfoWindow();

    and this to addListener()

        google.maps.event.addListener(marker, 'click', (function (marker, i) {
            return function () {
               infowindow.setContent(beaches[i][0]);
               infowindow.open(map, marker);
            }
        })(marker, i));
    

    Working example

    http://jsfiddle.net/p646xmcr/413/