Hiding Map Features With Styling

by Wolf

HTML

<div id="style-selector-control" class="map-control">
  <input type="radio" name="show-hide" id="hide-poi"
      class="selector-control">
  <label for="hide-poi">Hide</label>
  <input type="radio" name="show-hide" id="show-poi"
      class="selector-control" checked="checked">
  <label for="show-poi">Show</label>
</div>
<div id="map"></div>
<!-- Replace the value of the key parameter with your own API key. -->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap">
</script>

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: 1px solid #ccc;
  box-shadow: 0 2px 2px rgba(33, 33, 33, 0.4);
  font-family: 'Roboto','sans-serif';
  margin: 10px;
  padding-right: 5px;
  /* 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: 14px;
  line-height: 30px;
  vertical-align: baseline;
}

JavaScript

var map;
function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: 34.64587895248671, lng: 133.88889062162605},
    zoom: 18,
    mapTypeControl: false,
    styles: styles['default']
  });

  // Add controls to the map, allowing users to hide/show features.
  var styleControl = document.getElementById('style-selector-control');
  map.controls[google.maps.ControlPosition.TOP_LEFT].push(styleControl);

  // Apply new JSON when the user chooses to hide/show features.
  document.getElementById('hide-poi').addEventListener('click', function() {
    map.setOptions({styles: styles['hide']});
  });
  document.getElementById('show-poi').addEventListener('click', function() {
    map.setOptions({styles: styles['default']});
  });
}

var styles = {
  default: [
    {
    	featureType:'poi.school',
      stylers:[{hue:"#0000ff"},{lightness:0},{saturation:100},{gamma:0.3},{weight:0}]
    }
  ],
  hide: [
    {
      featureType: 'poi.business',
      stylers: [{visibility: 'off'}]
    },
    {
      featureType: 'transit',
      elementType: 'labels.icon',
      stylers: [{visibility: 'off'}]
    }
  ]
};