Make markers draggable

When draggability is enabled, users can drag markers on the map using the mouse or the arrow keys. To make a marker draggable, set the AdvancedMarkerElement.gmpDraggable property to true .

The following example map shows a draggable marker that displays its updated position when dragging is finished (the dragend event is fired):

To drag a marker with the keyboard:

  1. Press the tab key until markers are focused.
  2. Use the arrow key to move to the desired marker.
  3. To activate dragging, press Option + Spaceor Option + Enter(Mac), Alt + Spaceor Alt + Enter(Windows).
  4. Use the arrow keys to move the marker.
  5. To drop the marker at its new location, press Spaceor Enter. This will also turn dragging off.
  6. To turn dragging off and return the marker to its previous position, press Esc.

See the code

TypeScript

 async 
  
 function 
  
 initMap 
 () 
  
 { 
  
 // Request needed libraries. 
  
 const 
  
 { 
  
 Map 
 , 
  
 InfoWindow 
  
 } 
  
 = 
  
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 "maps" 
 ) 
  
 as 
  
 google 
 . 
 maps 
 . 
 MapsLibrary 
 ; 
  
 const 
  
 { 
  
 AdvancedMarkerElement 
  
 } 
  
 = 
  
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 "marker" 
 ) 
  
 as 
  
 google 
 . 
 maps 
 . 
 MarkerLibrary 
 ; 
  
 const 
  
 map 
  
 = 
  
 new 
  
 Map 
 ( 
 document 
 . 
 getElementById 
 ( 
 'map' 
 ) 
  
 as 
  
 HTMLElement 
 , 
  
 { 
  
 center 
 : 
  
 { 
 lat 
 : 
  
 37.39094933041195 
 , 
  
 lng 
 : 
  
 - 
 122.02503913145092 
 }, 
  
 zoom 
 : 
  
 14 
 , 
  
 mapId 
 : 
  
 '4504f8b37365c3d0' 
 , 
  
 }); 
  
 const 
  
 infoWindow 
  
 = 
  
 new 
  
 InfoWindow 
 (); 
  
 const 
  
 draggableMarker 
  
 = 
  
 new 
  
 AdvancedMarkerElement 
 ({ 
  
 map 
 , 
  
 position 
 : 
  
 { 
 lat 
 : 
  
 37.39094933041195 
 , 
  
 lng 
 : 
  
 - 
 122.02503913145092 
 }, 
  
 gmpDraggable 
 : 
  
 true 
 , 
  
 title 
 : 
  
 "This marker is draggable." 
 , 
  
 }); 
  
 draggableMarker 
 . 
 addListener 
 ( 
 'dragend' 
 , 
  
 ( 
 event 
 ) 
  
 = 
>  
 { 
  
 const 
  
 position 
  
 = 
  
 draggableMarker 
 . 
 position 
  
 as 
  
 google 
 . 
 maps 
 . 
 LatLng 
 ; 
  
 infoWindow 
 . 
 close 
 (); 
  
 infoWindow 
 . 
 setContent 
 ( 
 `Pin dropped at: 
 ${ 
 position 
 . 
 lat 
 } 
 , 
 ${ 
 position 
 . 
 lng 
 } 
 ` 
 ); 
  
 infoWindow 
 . 
 open 
 ( 
 draggableMarker 
 . 
 map 
 , 
  
 draggableMarker 
 ); 
  
 }); 
 } 
 initMap 
 (); 
  

JavaScript

 async 
  
 function 
  
 initMap 
 () 
  
 { 
  
 // Request needed libraries. 
  
 const 
  
 { 
  
 Map 
 , 
  
 InfoWindow 
  
 } 
  
 = 
  
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 "maps" 
 ); 
  
 const 
  
 { 
  
 AdvancedMarkerElement 
  
 } 
  
 = 
  
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 "marker" 
 ); 
  
 const 
  
 map 
  
 = 
  
 new 
  
 Map 
 ( 
 document 
 . 
 getElementById 
 ( 
 'map' 
 ), 
  
 { 
  
 center 
 : 
  
 { 
  
 lat 
 : 
  
 37.39094933041195 
 , 
  
 lng 
 : 
  
 - 
 122.02503913145092 
  
 }, 
  
 zoom 
 : 
  
 14 
 , 
  
 mapId 
 : 
  
 '4504f8b37365c3d0' 
 , 
  
 }); 
  
 const 
  
 infoWindow 
  
 = 
  
 new 
  
 InfoWindow 
 (); 
  
 const 
  
 draggableMarker 
  
 = 
  
 new 
  
 AdvancedMarkerElement 
 ({ 
  
 map 
 , 
  
 position 
 : 
  
 { 
  
 lat 
 : 
  
 37.39094933041195 
 , 
  
 lng 
 : 
  
 - 
 122.02503913145092 
  
 }, 
  
 gmpDraggable 
 : 
  
 true 
 , 
  
 title 
 : 
  
 "This marker is draggable." 
 , 
  
 }); 
  
 draggableMarker 
 . 
 addListener 
 ( 
 'dragend' 
 , 
  
 ( 
 event 
 ) 
  
 = 
>  
 { 
  
 const 
  
 position 
  
 = 
  
 draggableMarker 
 . 
 position 
 ; 
  
 infoWindow 
 . 
 close 
 (); 
  
 infoWindow 
 . 
 setContent 
 ( 
 `Pin dropped at: 
 ${ 
 position 
 . 
 lat 
 } 
 , 
 ${ 
 position 
 . 
 lng 
 } 
 ` 
 ); 
  
 infoWindow 
 . 
 open 
 ( 
 draggableMarker 
 . 
 map 
 , 
  
 draggableMarker 
 ); 
  
 }); 
 } 
 initMap 
 (); 
  

Set descriptive text

To set descriptive text for a marker, which can be read by screen readers, use the AdvancedMarkerElement.title attribute, as shown here:

   
 const 
  
 markerView 
  
 = 
  
 new 
  
 google 
 . 
 maps 
 . 
 marker 
 . 
 AdvancedMarkerElement 
 ({ 
  
 map 
 , 
  
 position 
 : 
  
 { 
  
 lat 
 : 
  
 37.4239163 
 , 
  
 lng 
 : 
  
 - 
 122.0947209 
  
 }, 
  
 title 
 : 
  
 "Some descriptive text." 
 , 
  
 }); 
 

When the title attribute is set, the text is visible to screen readers, and will appear when the mouse hovers over the marker.

Create a Mobile Website
View Site in Mobile | Classic
Share by: