How to Style Google Maps

  • google plus

In Brief...

You can use styled Google Maps to customize the visual display of maps. Here's how:

Instructions

For this tutorial, you can start with the Google map you created in 'How to Create a Simple Google Maps Mashup':


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
	<style>
		#map {
			height: 100%;
		}
		/* Optional: Makes the sample page fill the window. */
		html, body {
			height: 100%;
			margin: 0;
			padding: 0;
		}
	</style>
</head>
<body>
<div id="map"></div>
<script>
	var map;
	var parks = [
		{"park":"Yellowstone","coords":[44.4280,-110.5885]},
		{"park":"Glacier","coords":[48.7596, -113.7870]}
		];

	function initMap() {
		map = new google.maps.Map(document.getElementById('map'), {
			zoom: 4,
			center: new google.maps.LatLng(44, -110),
			mapTypeId: 'terrain'
		});

		mashParks(parks);
	}

	function mashParks(results) {
		for (var i = 0; i < results.length; i++) {
			var coords = results[i].coords;
			var latLng = new google.maps.LatLng(coords[0], coords[1]);
			var marker = new google.maps.Marker({
				position: latLng,
				map: map,
				label:results[i].park
			});
		}
	}

</script>
<script async defer
		src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDTM5RKrtCLpZAj5HU3K3cTvFNB240NsBg&callback=initMap">
</script>
</body>
</html>

To apply style to a map, you must change the styles of the standard map type by modifying the .styles property of the MapOptions object. To do this, you'll use an array of MayTypeStyle objects. Each array uses selectors and styles to customize the display of your map. Starting with your basic, unstyled, map, follow these steps:

  1. Create an array named stylesArray inside the scripts block in your map page. This array should contain at least one MapTypeStyle object, which will have a stylers array and, optionally, a featureType property and an elementType property.
  2. 
    var stylesArray = [
    	{
    		featureType: '',
    		elementType: '',
    		stylers: [
    			{color: ''},
    			{visibility: ''},
    		]
    	},
    	{
    		featureType: '',
    		elementType: '',
    		stylers: [
    			{color: ''},
    			{visibility: ''},
    		]
    	}
    ];
    
  3. Modify the values of the properties to customize your map. You can find a complete reference to the available properties and values at https://developers.google.com/maps/documentation/javascript/style-reference. Here's an example:
  4. 
    var stylesArray = [
    	{
    		featureType: 'poi.park',
    		elementType: 'geometry',
    		stylers: [
    			{color: '#00FF00'}
    		]
    	},
    	{
    		featureType: 'water',
    		elementType: 'geometry',
    		stylers: [
    			{color: '#000000'}
    		]
    	}
    ];
    
  5. Pass stylesArray into the mapOptions object's styles property:
  6. 
    map = new google.maps.Map(document.getElementById('map'), {
    	zoom: 6,
    	center: new google.maps.LatLng(44, -110),
    	mapTypeId: 'terrain',
    	styles: stylesArray
    });
    
  7. Open your web page in a browser to see the results.
    Styled U.S. Parks Mashup

Author: Chris Minnick

Chris is a prolific author and trainer, and the CEO of WatzThis?. His published books include Writing Computer Code, JavaScript for Kids, Coding with JavaScript For Dummies, Beginning HTML5 and CSS3 For Dummies, Webkit For Dummies, CIW eCommerce Certification Bible, and New Riders' XHTML.

Discuss