2011-12-01 10 views
5

Jestem nowy w korzystaniu z map Google i próbuję dowiedzieć się, jak ograniczyć funkcję zoomu, aby nie powiększać nigdzie poza centrum mapy, a nie powiększ do punktu myszy. Zasadniczo jest on przybliżany do środka zwróconej mapy, niezależnie od tego, gdzie znajduje się wskaźnik myszy na mapie, a nie do zoomu, gdy wskaźnik myszy znajduje się na mapie. Nie wiem nawet, czy jest to obecnie możliwe, pomoc zostanie doceniona.Przybliżanie do środka na mapie w Google Maps API V3

<script type="text/javascript"> 
     function initialize() { 
     var latlng = new google.maps.LatLng(51.285583, 1.091045); 
     var myOptions = { 
     zoom: 15, 
     center: latlng, 
     scrollwheel: true, 
     navigationControl: false, 
     mapTypeControl: false, 
     scaleControl: false, 
     draggable: false, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     var map = new google.maps.Map(document.getElementById("map_canvas"), 
     myOptions); 

     var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(51.285826, 1.089973), 
      map: map, 
      title: 'Run of The Mill', 
      clickable: true 
      }); 
     } 
    </script> 
+0

Wystarczy popatrzeć na to: http://stackoverflow.com/questions/2818984/google-map-api-v3-center-zoom-on-displayed-markers – Flukey

Odpowiedz

4

Istnieje kilka rodzajów zoom:

  • wykorzystujące kontrolę zoomu - że zoomy na środku mapy
  • używając kółka - że zoomy do wskaźnika myszy, jak skarżą
  • za pomocą dwukrotnego kliknięcia - to najpierw centruje miejsce pod wskaźnikiem myszy, a następnie powiększa

Jeśli więc chcesz tylko pierwszy typ powiększenia, możesz wyłączyć pozostałe dwa, ustawiając opcje disableDoubleClickZoom i scrollwheel map na false.

Co więcej, możesz sobie poradzić z zdarzeniem mapy dblclick (zdarzenie scroll wheel nie jest tak proste, ale być może znajdziesz sposób na how to handle the scroll wheel in javascript) iw tej obsadzie wystarczy zmienić skalę mapy używając map.setZoom(). Centrum map pozostanie niezmienione. Całkiem łatwe.

0

Z tego, co widzę w twoim kodzie, powiększasz zmienną latlng, którą zadeklarowałeś powyżej. To jest poprawne. Twoja zmienna myOptions jest następnie przekazywana do Twojej nowej deklaracji map. Więc powinieneś być skoncentrowany na 51.285583, 1.091045, który jest Caterbury Kent w Wielkiej Brytanii.

Jeśli jest tam, gdzie wskazuje twoja mysz, działa, jeśli to nie pomoże, sugerowałbym skopiowanie przykładu z przykładów google i wycięcie tego, czego nie potrzebujesz do pierwszego dema.

http://code.google.com/apis/maps/documentation/javascript/examples/index.html

2

Albo obsłuż to, ponownie centrując mapę po zmianie powiększenia. Zachowuje to oczekiwaną funkcjonalność dla podwójnego kliknięcia i przewijania koła.

google.maps.event.addListener(map,'zoom_changed',function() { 
    map.setCenter(new google.maps.LatLng(47.61388802057299,-122.31870898147581)); 
}) 
+1

Nie jest to dobre rozwiązanie, ponieważ wizualne efekt przesunięcia mapy do punktu przybliżenia, a następnie powrót do pożądanego centrum jest absolutnie błędny! –

Powiązane problemy