SORU
29 EYLÜL 2010, ÇARŞAMBA


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
29 EYLÜL 2010, ÇARŞAMBA


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 JavaScript API v3 Example: Force stop map dragging

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • metallmanutza13

    metallmanutz

    13 NİSAN 2007
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013