Google Maps v3 - görülebilir alan sınırı ve seviye zoom
Google haritası belirli bir alana v3 sınırlamak mümkün mü? Sadece bazı alan görüntüleme (örneğin, bir ülkenin) izin ve kullanıcı başka bir slayt için izin istiyorum. Ayrıca, yakınlaştırma seviyesini sınırlamak için - örneğin sadece seviyeleri 6 ve 9 arasında istiyorum. Ve tüm temel eşleme türlerini kullanmak istiyorum.
Bunu başarmak için herhangi bir yolu var mı?
Yakınlaştırma düzeyini StyledMap kullanarak sınırlayıcı ile kısmi bir başarı elde etti, ama diğer temel türleri bu yolda zoom sınırı edemedim yol HARİTASI kısıtlama ile başarılı oldum.
Herhangi bir yardım için teşekkürler
CEVAP
dragend
olay dinleyebilirsiniz, ve eğer haritaya izin verilen sınırın dışına sürükledi, içeri gir. LatLngBounds
bir nesne izin sınırlarını tanımlamak ve yeni lat/lng merkezi sınırları içinde olup olmadığını kontrol etmek için contains()
yöntemi kullanabilirsiniz.
Ayrıca zoom çok kolay level sınırı.
Düşünün aşağıdaki örnek: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>
Ekran görüntüsü yukarıdaki örnekte. Kullanıcı daha güneye ya da çok bu durumda Doğu sürükleyin mümkün olmayacaktır:
Google Maps hesaplamak için Nasıl V3 -...
Devre dışı bırakmak için fare tekerleğ...
Google Maps zoom kontrolü...
Google Maps v3 fitBounds() tek marker ...
Google Maps API V3 : ekran hataları (e...