आप dragend
ईवेंट को सुन सकते हैं , और यदि नक्शा अनुमत सीमा के बाहर खींच लिया गया है, तो उसे वापस अंदर ले जाएं। आप अपने अनुमत सीमा को एक LatLngBounds
वस्तु में परिभाषित कर सकते हैं और फिर contains()
यह जांचने के लिए विधि का उपयोग कर सकते हैं कि क्या नया लैट / लैंग सेंटर सीमा के भीतर है।
आप ज़ूम स्तर को बहुत आसानी से सीमित भी कर सकते हैं।
निम्नलिखित उदाहरण पर विचार करें: Fiddle Demo
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Limit Panning and Zoom</title>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=false"></script>
</head>
<body>
<div id="map" style="width: 400px; height: 300px;"></div>
<script type="text/javascript">
// This is the minimum zoom level that we'll allow
var minZoomLevel = 5;
var map = new google.maps.Map(document.getElementById('map'), {
zoom: minZoomLevel,
center: new google.maps.LatLng(38.50, -90.50),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// Bounds for North America
var strictBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(28.70, -127.50),
new google.maps.LatLng(48.85, -55.90)
);
// Listen for the dragend event
google.maps.event.addListener(map, 'dragend', 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);
});
</script>
</body>
</html>
उपरोक्त उदाहरण से स्क्रीनशॉट। उपयोगकर्ता इस मामले में आगे दक्षिण या दूर पूर्व की ओर नहीं खींच पाएंगे:
if (x < minX) x = minX;
औरif (x > maxX) x = maxX;
कैसे बाहर रखें? यद्यपि आप मिनएक्स / मैक्सएक्स और मैक्सएक्स / मैक्सी निर्देशांक पर कैनवास को केंद्र में रखते हैं, हालांकि वे केंद्र के निर्देशांक नहीं हैं?