Skip to content

Instantly share code, notes, and snippets.

@rs77
Created December 9, 2022 22:09
Show Gist options
  • Save rs77/dbb1c019438dafab1680248fb8405e94 to your computer and use it in GitHub Desktop.
Save rs77/dbb1c019438dafab1680248fb8405e94 to your computer and use it in GitHub Desktop.

If you want to embed a Google Map into your website and have a marker with an InfoWindow that you'd like to display once the page loads, you don't have to resort to using jQuery or window.onload events.

The following code alone is a working example for a recent task requirement.

In fact the solution is so simple you just need to add one more line to your initialize function.

Here's a basic sample with the solution:

<!DOCTYPE html>
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <meta charset="utf-8">
        <title>InfoWindow Displayed on Window Load</title>
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
        <script type="text/javascript">            
            function initialize() {
                /**
                 * SETTINGS
                 * 1\. latitude and longitude values, enter them below
                 * 2\. ID name of the element containing the map canvas
                 * 3\. HTML of what you'd like to display in the `InfoWindow`
                 */
                // 1A. Latitude setting
                /** @type {Number} */
                var latitude = -25.4121;
                // 1B. Longitude setting
                /** @type {Number} */
                var longitude = 133.77514;
                // 2\. ID of element containing the map canvas
                var mapDivId = "map_canvas";
                // 3\. HTML of what you want to display in your info content
                /** @type {String} */
                var infoContent = "<h1>Hello world!</h1>";

                var pos = new google.maps.LatLng( latitude, longitude );  
                /** @type {Object} */              
                var settings = {
                    zoom: 4,
                    center: pos,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };

                var map = new google.maps.Map( document.getElementById(mapDivId), settings );

                var markerInfo = new google.maps.InfoWindow({
                    content : infoContent
                });

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

                google.maps.event.addListener( marker, 'click', function() {
                    markerInfo.open( map, marker );
                }); // this creates the listener for popping up the infoWindow
                // and here's where the magic happens... just add this next line and voila!
                google.maps.event.trigger( marker, 'click' );
            }
            google.maps.event.addDomListener( window, 'load', initialize );
        </script>
    </head>
    <body>
        <div id="map_canvas" style="width:960px;height:400px;"></div>
    </body>
</html>

This sample script displays the map marker, and it's InfoWindow with the content you've entered in the infoContent variable.

I love easy solutions!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment