Read the documentation or view this example fullscreen.
// This example creates a rectangle based on the viewport // on any 'zoom-changed' event. function initMap() { var map = new google.maps.Map(document.getElementById('map'), { zoom: 11, center: {lat: 40.748520, lng: -73.981687}, mapTypeId: 'terrain' }); var rectangle = new google.maps.Rectangle(); map.addListener('zoom_changed', function() { // Get the current bounds, which reflect the bounds before the zoom. rectangle.setOptions({ strokeColor: '#FF0000', strokeOpacity: 0.8, strokeWeight: 2, fillColor: '#FF0000', fillOpacity: 0.35, map: map, bounds: map.getBounds() }); }); }
<div id="map"></div>
/* 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; }
<!-- 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>
Try it yourself
You can experiment with this code in JSFiddle by clicking the <>
icon in the
top-right corner of the code window.
<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"> <title>Rectangle Zoom</title> <style> /* 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; } </style> </head> <body> <div id="map"></div> <script> // This example creates a rectangle based on the viewport // on any 'zoom-changed' event. function initMap() { var map = new google.maps.Map(document.getElementById('map'), { zoom: 11, center: {lat: 40.748520, lng: -73.981687}, mapTypeId: 'terrain' }); var rectangle = new google.maps.Rectangle(); map.addListener('zoom_changed', function() { // Get the current bounds, which reflect the bounds before the zoom. rectangle.setOptions({ strokeColor: '#FF0000', strokeOpacity: 0.8, strokeWeight: 2, fillColor: '#FF0000', fillOpacity: 0.35, map: map, bounds: map.getBounds() }); }); } </script> <script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"> </script> </body> </html>