Google Maps v3 - limit viewable area and zoom level
SO-3818016
HTML
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<div id="map" style="width: 400px; height: 300px;"></div>
JavaScript
// This is the minimum zoom level that we'll allow
var minZoomLevel = 14;
var map = new google.maps.Map(document.getElementById('map'), {
zoom: minZoomLevel,
center: new google.maps.LatLng(53.2170249, 6.5656727),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: {lat: 53.218573, lng: 6.567293},
map: map,
title: '???'
});
// Bounds for Groningen
var strictBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(53.2124505, 6.5558022), //Southwest
new google.maps.LatLng(53.2212904, 6.5760153)); //Northeast
// Listen for the dragend event
google.maps.event.addListener(map, 'bounds_changed', function () {
if (strictBounds.contains(map.getCenter())) return;
// We're out of bounds - Move the map back within the bounds
var c = map.getCenter(),
x = c.lng(),
y = c.lat(),
maxX = strictBounds.getNorthEast().lng(),
maxY = strictBounds.getNorthEast().lat(),
minX = strictBounds.getSouthWest().lng(),
minY = strictBounds.getSouthWest().lat();
if (x < minX) x = minX;
if (x > maxX) x = maxX;
if (y < minY) y = minY;
if (y > maxY) y = maxY;
map.setCenter(new google.maps.LatLng(y, x));
});
// Limit the zoom level
google.maps.event.addListener(map, 'zoom_changed', function () {
if (map.getZoom() < minZoomLevel) map.setZoom(minZoomLevel);
});