Similar to previous example, except that we have added half second delay before the infoWindow pops up, to avoid an "infoWindow Storm" as user moves mouse over screen quickly.
To do: remove "X" in mouseover InfoWindow
<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"> <title>Simple Google Map with multiple markers with InfoWindows on click and mouseover events</title> <style> body{ padding:20px font-family: Arial; font-size: 16px; } #map-canvas, #side-bar { height: 500px; width: 600px; } pre { border:1px solid #D6E0F5; padding:5px; margin:5px; background:#EBF0FA; } /* fix for unwanted scroll bar in InfoWindow */ .scrollFix { line-height: 1.35; overflow: hidden; white-space: nowrap; } </style> <script src="http://maps.googleapis.com/maps/api/js" type="text/javascript"></script> <script type="text/javascript"> "use strict"; // variable to hold a map var map; // variable to hold current active InfoWindow var activeInfoWindow ; // ------------------------------------------------------------------------------- // // initialize function // ------------------------------------------------------------------------------- // function initialize() { // map options - lots of options available here var mapOptions = { zoom : 7, draggable: true, center : new google.maps.LatLng(44.9600, -93.1000), mapTypeId : google.maps.MapTypeId.ROADMAP }; // create map in div called map-canvas using map options defined above map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); // define three Google Map LatLng objects representing geographic points var stPaul = new google.maps.LatLng(44.95273,-93.08915); var minneapolis = new google.maps.LatLng(44.97994,-93.26630); var falconHeights = new google.maps.LatLng(44.9917,-93.1664); // place markers fnPlaceMarkers(stPaul,"St Paul"); fnPlaceMarkers(minneapolis,"Minneapolis"); fnPlaceMarkers(falconHeights,"Falcon Heights"); } // ------------------------------------------------------------------------------- // // create markers on the map // ------------------------------------------------------------------------------- // function fnPlaceMarkers(myLocation,myCityName){ var marker = new google.maps.Marker({ position : myLocation }); // Renders the marker on the specified map marker.setMap(map); // create an InfoWindow - for mouseover var infoWnd = new google.maps.InfoWindow(); // create an InfoWindow - for mouseclick var infoWnd2 = new google.maps.InfoWindow(); // variable to hold number of seconds before showing infoWindow on Mouseover event var mouseoverTimeoutId = null; // ----------------------- // ON MOUSEOVER // ----------------------- // add content to your InfoWindow infoWnd.setContent('<div class="scrollFix">' + 'Welcome to ' + myCityName + '</div>'); // add listener on InfoWindow for mouseover event google.maps.event.addListener(marker, 'mouseover', function() { // create half second delay before showing infowIndow mouseoverTimeoutId = setTimeout(function(){ // Close active window if exists - [one might expect this to be default behaviour no?] if(activeInfoWindow != null) activeInfoWindow.close(); // Close info Window on mouseclick if already opened infoWnd2.close(); // Open new InfoWindow for mouseover event infoWnd.open(map, marker); // Store new open InfoWindow in global variable activeInfoWindow = infoWnd; }, 500 ); }); // on mouseout (moved mouse off marker) make infoWindow disappear google.maps.event.addListener(marker, 'mouseout', function() { infoWnd.close(); }); // -------------------------------- // ON MARKER CLICK - (Mouse click) // -------------------------------- // add content to InfoWindow for click event infoWnd2.setContent('<div class="scrollFix">' + 'Welcome to ' + myCityName + '. <br/>This Infowindow appears when you click on marker</div>'); // add listener on InfoWindow for click event google.maps.event.addListener(marker, 'click', function() { //Close active window if exists - [one might expect this to be default behaviour no?] if(activeInfoWindow != null) activeInfoWindow.close(); // Open InfoWindow - on click infoWnd2.open(map, marker); // Close "mouseover" infoWindow infoWnd.close(); // Store new open InfoWindow in global variable activeInfoWindow = infoWnd2; }); } // ------------------------------------------------------------------------------- // // initial load // ------------------------------------------------------------------------------- // google.maps.event.addDomListener(window, 'load', initialize); </script> <a href="../index.php">BACK</a><br> <br/> <h3>Simple Google Map with three markers displaying InfoWindows with mouseover delay</h3> <p>Similar to <a href='../maps_02/index.php'>previous example</a>, except that we have added half second delay before the infoWindow pops up, to avoid an "infoWindow Storm" as user moves mouse over screen quickly.</p> <br/> <div id="map-canvas"></div> <br/> <br/> <p>To do: remove "X" in mouseover InfoWindow</p> <pre> </pre> </body> </html>