Styled Map Selection

This example applies custom styles to a map by setting MapOptions.styles to a JSON object containing style declarations. Select an option to see some of the customizations you can apply with map styling. One of the options shows you how to hide features,in this case by removing business points of interest and public transport icons from the map.

Read the documentation .

TypeScript

 let 
  
 map 
 : 
  
 google.maps.Map 
 ; 
 function 
  
 initMap 
 () 
 : 
  
 void 
  
 { 
  
 // Create the map with no initial style specified. 
  
 // It therefore has default styling. 
  
 map 
  
 = 
  
 new 
  
 google 
 . 
 maps 
 . 
 Map 
 ( 
 document 
 . 
 getElementById 
 ( 
 "map" 
 ) 
  
 as 
  
 HTMLElement 
 , 
  
 { 
  
 center 
 : 
  
 { 
  
 lat 
 : 
  
 - 
 33.86 
 , 
  
 lng 
 : 
  
 151.209 
  
 }, 
  
 zoom 
 : 
  
 13 
 , 
  
 mapTypeControl 
 : 
  
 false 
 , 
  
 }); 
  
 // Add a style-selector control to the map. 
  
 const 
  
 styleControl 
  
 = 
  
 document 
 . 
 getElementById 
 ( 
  
 "style-selector-control" 
  
 ) 
  
 as 
  
 HTMLElement 
 ; 
  
 map 
 . 
 controls 
 [ 
 google 
 . 
 maps 
 . 
 ControlPosition 
 . 
 TOP_LEFT 
 ]. 
 push 
 ( 
 styleControl 
 ); 
  
 // Set the map's style to the initial value of the selector. 
  
 const 
  
 styleSelector 
  
 = 
  
 document 
 . 
 getElementById 
 ( 
  
 "style-selector" 
  
 ) 
  
 as 
  
 HTMLSelectElement 
 ; 
  
 map 
 . 
 setOptions 
 ({ 
  
 styles 
 : 
  
 styles 
 [ 
 styleSelector 
 . 
 value 
 ] 
  
 }); 
  
 // Apply new JSON when the user selects a different style. 
  
 styleSelector 
 . 
 addEventListener 
 ( 
 "change" 
 , 
  
 () 
  
 = 
>  
 { 
  
 map 
 . 
 setOptions 
 ({ 
  
 styles 
 : 
  
 styles 
 [ 
 styleSelector 
 . 
 value 
 ] 
  
 }); 
  
 }); 
 } 
 const 
  
 styles 
 : 
  
 Record<string 
 , 
  
 google 
 . 
 maps 
 . 
 MapTypeStyle 
 [] 
>  
 = 
  
 { 
  
 default 
 : 
  
 [], 
  
 silver 
 : 
  
 [ 
  
 { 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f5f5f5" 
  
 }], 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.icon" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 visibility 
 : 
  
 "off" 
  
 }], 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#616161" 
  
 }], 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f5f5f5" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative.land_parcel" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#bdbdbd" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#eeeeee" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#757575" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#e5e5e5" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#9e9e9e" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#ffffff" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.arterial" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#757575" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dadada" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#616161" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.local" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#9e9e9e" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.line" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#e5e5e5" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.station" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#eeeeee" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#c9c9c9" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#9e9e9e" 
  
 }], 
  
 }, 
  
 ], 
  
 night 
 : 
  
 [ 
  
 { 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#242f3e" 
  
 }] 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#242f3e" 
  
 }] 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#746855" 
  
 }] 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative.locality" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#d59563" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#d59563" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#263c3f" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#6b9a76" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#38414e" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#212a37" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#9ca5b3" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#746855" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#1f2835" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f3d19c" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#2f3948" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.station" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#d59563" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#17263c" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#515c6d" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#17263c" 
  
 }], 
  
 }, 
  
 ], 
  
 retro 
 : 
  
 [ 
  
 { 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#ebe3cd" 
  
 }] 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#523735" 
  
 }] 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f5f1e6" 
  
 }] 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#c9b2a6" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative.land_parcel" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dcd2be" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative.land_parcel" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#ae9e90" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "landscape.natural" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dfd2ae" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dfd2ae" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#93817c" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "geometry.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#a5b076" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#447530" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f5f1e6" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.arterial" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#fdfcf8" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f8c967" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#e9bc62" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway.controlled_access" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#e98d58" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway.controlled_access" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#db8555" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.local" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#806b63" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.line" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dfd2ae" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.line" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#8f7d77" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.line" 
 , 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#ebe3cd" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.station" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dfd2ae" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "geometry.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#b9d3c2" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#92998d" 
  
 }], 
  
 }, 
  
 ], 
  
 hiding 
 : 
  
 [ 
  
 { 
  
 featureType 
 : 
  
 "poi.business" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 visibility 
 : 
  
 "off" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit" 
 , 
  
 elementType 
 : 
  
 "labels.icon" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 visibility 
 : 
  
 "off" 
  
 }], 
  
 }, 
  
 ], 
 }; 
 declare 
  
 global 
  
 { 
  
 interface 
  
 Window 
  
 { 
  
 initMap 
 : 
  
 () 
  
 = 
>  
 void 
 ; 
  
 } 
 } 
 window 
 . 
 initMap 
  
 = 
  
 initMap 
 ; 
  

JavaScript

 let 
  
 map 
 ; 
 function 
  
 initMap 
 () 
  
 { 
  
 // Create the map with no initial style specified. 
  
 // It therefore has default styling. 
  
 map 
  
 = 
  
 new 
  
 google 
 . 
 maps 
 . 
 Map 
 ( 
 document 
 . 
 getElementById 
 ( 
 "map" 
 ), 
  
 { 
  
 center 
 : 
  
 { 
  
 lat 
 : 
  
 - 
 33.86 
 , 
  
 lng 
 : 
  
 151.209 
  
 }, 
  
 zoom 
 : 
  
 13 
 , 
  
 mapTypeControl 
 : 
  
 false 
 , 
  
 }); 
  
 // Add a style-selector control to the map. 
  
 const 
  
 styleControl 
  
 = 
  
 document 
 . 
 getElementById 
 ( 
 "style-selector-control" 
 ); 
  
 map 
 . 
 controls 
 [ 
 google 
 . 
 maps 
 . 
 ControlPosition 
 . 
 TOP_LEFT 
 ]. 
 push 
 ( 
 styleControl 
 ); 
  
 // Set the map's style to the initial value of the selector. 
  
 const 
  
 styleSelector 
  
 = 
  
 document 
 . 
 getElementById 
 ( 
 "style-selector" 
 ); 
  
 map 
 . 
 setOptions 
 ({ 
  
 styles 
 : 
  
 styles 
 [ 
 styleSelector 
 . 
 value 
 ] 
  
 }); 
  
 // Apply new JSON when the user selects a different style. 
  
 styleSelector 
 . 
 addEventListener 
 ( 
 "change" 
 , 
  
 () 
  
 = 
>  
 { 
  
 map 
 . 
 setOptions 
 ({ 
  
 styles 
 : 
  
 styles 
 [ 
 styleSelector 
 . 
 value 
 ] 
  
 }); 
  
 }); 
 } 
 const 
  
 styles 
  
 = 
  
 { 
  
 default 
 : 
  
 [], 
  
 silver 
 : 
  
 [ 
  
 { 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f5f5f5" 
  
 }], 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.icon" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 visibility 
 : 
  
 "off" 
  
 }], 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#616161" 
  
 }], 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f5f5f5" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative.land_parcel" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#bdbdbd" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#eeeeee" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#757575" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#e5e5e5" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#9e9e9e" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#ffffff" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.arterial" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#757575" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dadada" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#616161" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.local" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#9e9e9e" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.line" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#e5e5e5" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.station" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#eeeeee" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#c9c9c9" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#9e9e9e" 
  
 }], 
  
 }, 
  
 ], 
  
 night 
 : 
  
 [ 
  
 { 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#242f3e" 
  
 }] 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#242f3e" 
  
 }] 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#746855" 
  
 }] 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative.locality" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#d59563" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#d59563" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#263c3f" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#6b9a76" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#38414e" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#212a37" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#9ca5b3" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#746855" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#1f2835" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f3d19c" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#2f3948" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.station" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#d59563" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#17263c" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#515c6d" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#17263c" 
  
 }], 
  
 }, 
  
 ], 
  
 retro 
 : 
  
 [ 
  
 { 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#ebe3cd" 
  
 }] 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#523735" 
  
 }] 
  
 }, 
  
 { 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f5f1e6" 
  
 }] 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#c9b2a6" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative.land_parcel" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dcd2be" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "administrative.land_parcel" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#ae9e90" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "landscape.natural" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dfd2ae" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dfd2ae" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#93817c" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "geometry.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#a5b076" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "poi.park" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#447530" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f5f1e6" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.arterial" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#fdfcf8" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#f8c967" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#e9bc62" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway.controlled_access" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#e98d58" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.highway.controlled_access" 
 , 
  
 elementType 
 : 
  
 "geometry.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#db8555" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "road.local" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#806b63" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.line" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dfd2ae" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.line" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#8f7d77" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.line" 
 , 
  
 elementType 
 : 
  
 "labels.text.stroke" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#ebe3cd" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit.station" 
 , 
  
 elementType 
 : 
  
 "geometry" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#dfd2ae" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "geometry.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#b9d3c2" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "water" 
 , 
  
 elementType 
 : 
  
 "labels.text.fill" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 color 
 : 
  
 "#92998d" 
  
 }], 
  
 }, 
  
 ], 
  
 hiding 
 : 
  
 [ 
  
 { 
  
 featureType 
 : 
  
 "poi.business" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 visibility 
 : 
  
 "off" 
  
 }], 
  
 }, 
  
 { 
  
 featureType 
 : 
  
 "transit" 
 , 
  
 elementType 
 : 
  
 "labels.icon" 
 , 
  
 stylers 
 : 
  
 [{ 
  
 visibility 
 : 
  
 "off" 
  
 }], 
  
 }, 
  
 ], 
 }; 
 window 
 . 
 initMap 
  
 = 
  
 initMap 
 ; 
  

CSS

 /* 
 * Always set the map height explicitly to define the size of the div element 
 * that contains the map. 
 */ 
 # 
 map 
  
 { 
  
 height 
 : 
  
 100 
 % 
 ; 
 } 
 /* 
 * Optional: Makes the sample page fill the window. 
 */ 
 html 
 , 
 body 
  
 { 
  
 height 
 : 
  
 100 
 % 
 ; 
  
 margin 
 : 
  
 0 
 ; 
  
 padding 
 : 
  
 0 
 ; 
 } 
 . 
 map-control 
  
 { 
  
 background-color 
 : 
  
 #fff 
 ; 
  
 border 
 : 
  
 1 
 px 
  
 solid 
  
 #ccc 
 ; 
  
 box-shadow 
 : 
  
 0 
  
 2 
 px 
  
 2 
 px 
  
 rgba 
 ( 
 33 
 , 
  
 33 
 , 
  
 33 
 , 
  
 0.4 
 ); 
  
 font-family 
 : 
  
 "Roboto" 
 , 
  
 "sans-serif" 
 ; 
  
 margin 
 : 
  
 10 
 px 
 ; 
  
 /* Hide the control initially, to prevent it from appearing 
 before the map loads. */ 
  
 display 
 : 
  
 none 
 ; 
 } 
 /* Display the control once it is inside the map. */ 
 # 
 map 
  
 . 
 map-control 
  
 { 
  
 display 
 : 
  
 block 
 ; 
 } 
 . 
 selector-control 
  
 { 
  
 font-size 
 : 
  
 14 
 px 
 ; 
  
 line-height 
 : 
  
 30 
 px 
 ; 
  
 padding-left 
 : 
  
 5 
 px 
 ; 
  
 padding-right 
 : 
  
 5 
 px 
 ; 
 } 
  

HTML

<html>
  <head>
    <title>Styled Map Selection</title>

    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script type="module" src="./index.js"></script>
  </head>
  <body>
    <div id="style-selector-control" class="map-control">
      <select id="style-selector" class="selector-control">
        <option value="default">Default</option>
        <option value="silver">Silver</option>
        <option value="night">Night mode</option>
        <option value="retro" selected="selected">Retro</option>
        <option value="hiding">Hide features</option>
      </select>
    </div>
    <div id="map"></div>

    <!-- 
      The `defer` attribute causes the script to execute after the full HTML
      document has been parsed. For non-blocking uses, avoiding race conditions,
      and consistent behavior across browsers, consider loading using Promises. See
      https://developers.google.com/maps/documentation/javascript/load-maps-js-api
      for more information.
      -->
    <script
      src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly"
      defer
    ></script>
  </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 
  
 - 
 b 
  
 sample 
 - 
 style 
 - 
 selector 
  
 https 
 : 
 //github.com/googlemaps/js-samples.git 
 
  
  cd 
  
 js 
 - 
 samples 
 
  
  npm 
  
 i 
 
  
  npm 
  
 start 
 

Other samples can be tried by switching to any branch beginning with sample- SAMPLE_NAME .

  
  git 
  
 checkout 
  
 sample 
 - 
  SAMPLE_NAME 
 
 
  
  npm 
  
 i 
 
  
  npm 
  
 start 
 
Create a Mobile Website
View Site in Mobile | Classic
Share by: