Simple Click Events

  • This example showcases the implementation of event listeners in Google Maps using JavaScript or TypeScript.

  • Clicking the marker on the map triggers a zoom-in and centers the map on the marker's location.

  • The map automatically pans back to the marker's position 3 seconds after the center of the map is changed.

  • Code samples in JavaScript, TypeScript, HTML, and CSS are provided, alongside links to documentation and live demos.

This example demonstrates the use of event listeners. It

  • listens for the click event on a marker to zoom the map when the marker is clicked.
  • listens for the center_changed event to pan the map back to the marker after 3 seconds.

Read the documentation .

TypeScript

 async 
  
 function 
  
 initMap 
 () 
  
 { 
  
 // Request needed libraries. 
  
 ( 
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 'maps' 
 )) 
  
 as 
  
 google 
 . 
 maps 
 . 
 MapsLibrary 
 ; 
  
 ( 
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 'marker' 
 )) 
  
 as 
  
 google 
 . 
 maps 
 . 
 MarkerLibrary 
 ; 
  
 // Retrieve the map element. 
  
 const 
  
 mapElement 
  
 = 
  
 document 
 . 
 querySelector 
 ( 
  
 'gmp-map' 
  
 ) 
  
 as 
  
 google 
 . 
 maps 
 . 
 MapElement 
 ; 
  
 // Get the inner map from the map element. 
  
 const 
  
 innerMap 
  
 = 
  
 mapElement 
 . 
 innerMap 
 ; 
  
 const 
  
 center 
  
 = 
  
 mapElement 
 . 
 center 
 ; 
  
 const 
  
 marker 
  
 = 
  
 new 
  
 google 
 . 
 maps 
 . 
 marker 
 . 
 AdvancedMarkerElement 
 ({ 
  
 position 
 : 
  
 center 
 , 
  
 map 
 : 
  
 innerMap 
 , 
  
 title 
 : 
  
 'Click to zoom' 
 , 
  
 gmpClickable 
 : 
  
 true 
 , 
  
 }); 
  
 innerMap 
 . 
 addListener 
 ( 
 'center_changed' 
 , 
  
 () 
  
 = 
>  
 { 
  
 // 3 seconds after the center of the map has changed, 
  
 // pan back to the marker. 
  
 window 
 . 
 setTimeout 
 (() 
  
 = 
>  
 { 
  
 innerMap 
 . 
 panTo 
 ( 
 marker 
 . 
 position 
  
 as 
  
 google 
 . 
 maps 
 . 
 LatLng 
 ); 
  
 }, 
  
 3000 
 ); 
  
 }); 
  
 // Zoom in when the marker is clicked. 
  
 marker 
 . 
 addEventListener 
 ( 
 'gmp-click' 
 , 
  
 () 
  
 = 
>  
 { 
  
 innerMap 
 . 
 setZoom 
 ( 
 8 
 ); 
  
 innerMap 
 . 
 setCenter 
 ( 
 marker 
 . 
 position 
  
 as 
  
 google 
 . 
 maps 
 . 
 LatLng 
 ); 
  
 }); 
 } 
 initMap 
 (); 
  

JavaScript

 async 
  
 function 
  
 initMap 
 () 
  
 { 
  
 // Request needed libraries. 
  
 ( 
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 'maps' 
 )); 
  
 ( 
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 'marker' 
 )); 
  
 // Retrieve the map element. 
  
 const 
  
 mapElement 
  
 = 
  
 document 
 . 
 querySelector 
 ( 
 'gmp-map' 
 ); 
  
 // Get the inner map from the map element. 
  
 const 
  
 innerMap 
  
 = 
  
 mapElement 
 . 
 innerMap 
 ; 
  
 const 
  
 center 
  
 = 
  
 mapElement 
 . 
 center 
 ; 
  
 const 
  
 marker 
  
 = 
  
 new 
  
 google 
 . 
 maps 
 . 
 marker 
 . 
 AdvancedMarkerElement 
 ({ 
  
 position 
 : 
  
 center 
 , 
  
 map 
 : 
  
 innerMap 
 , 
  
 title 
 : 
  
 'Click to zoom' 
 , 
  
 gmpClickable 
 : 
  
 true 
 , 
  
 }); 
  
 innerMap 
 . 
 addListener 
 ( 
 'center_changed' 
 , 
  
 () 
  
 = 
>  
 { 
  
 // 3 seconds after the center of the map has changed, 
  
 // pan back to the marker. 
  
 window 
 . 
 setTimeout 
 (() 
  
 = 
>  
 { 
  
 innerMap 
 . 
 panTo 
 ( 
 marker 
 . 
 position 
 ); 
  
 }, 
  
 3000 
 ); 
  
 }); 
  
 // Zoom in when the marker is clicked. 
  
 marker 
 . 
 addEventListener 
 ( 
 'gmp-click' 
 , 
  
 () 
  
 = 
>  
 { 
  
 innerMap 
 . 
 setZoom 
 ( 
 8 
 ); 
  
 innerMap 
 . 
 setCenter 
 ( 
 marker 
 . 
 position 
 ); 
  
 }); 
 } 
 initMap 
 (); 
  

CSS

 /* 
 * Optional: Makes the sample page fill the window. 
 */ 
 html 
 , 
 body 
  
 { 
  
 height 
 : 
  
 100 
 % 
 ; 
  
 margin 
 : 
  
 0 
 ; 
  
 padding 
 : 
  
 0 
 ; 
 } 
  

HTML

<html>
  <head>
    <title>Simple Click Events</title>

    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script type="module" src="./index.js"></script>
    <!-- prettier-ignore -->
    <script>(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})
        ({key: "AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8", v: "weekly"});</script>
  </head>
  <body>
    <gmp-map center="-25.363, 131.044" zoom="4" map-id="DEMO_MAP_ID"></gmp-map>
  </body>
</html>  

Try Sample

Clone Sample

Git and Node.js are required to run this sample locally. Follow these instructions to install Node.js and NPM. The following commands clone, install dependencies and start the sample application.

  
  git 
  
 clone 
  
 https 
 : 
 //github.com/googlemaps-samples/js-api-samples.git 
 
  
  cd 
  
 samples 
 / 
 event 
 - 
 simple 
 
  
  npm 
  
 i 
 
  
  npm 
  
 start 
 
Create a Mobile Website
View Site in Mobile | Classic
Share by: