2012-09-21 10 views
6

czy możliwe jest wyłączenie ruchu wewnątrz google mal (v3) na czas przeciągnięcia znacznika? Nie chcę używać np. Statycznej mapy. Potrzebuję ogólnej funkcji ruchu, ale na razie przeciągam znacznik, mapa nie powinna się poruszać.Wyłączyć ruchomy Gmap

Wielkie dzięki!

Odpowiedz

15

Znaczniki mają dragstart and dragend events. Na dragstart wyłącz funkcję "ruchu" na mapie, ustawiając różne MapOptions na false, takie jak draggable, scrollwheel, itp. Na dragend, ustaw MapOptions z powrotem na true.

Oto funkcja, której można użyć do wyłączenia lub włączenia ruchu mapy na podstawie wartości boolowskiej. Zakłada on, że zmienna mapy to map.

function disableMovement(disable) { 
    var mapOptions; 
    if (disable) { 
     mapOptions = { 
      draggable: false, 
      scrollwheel: false, 
      disableDoubleClickZoom: true, 
      zoomControl: false 
     }; 
    } else { 
     mapOptions = { 
      draggable: true, 
      scrollwheel: true, 
      disableDoubleClickZoom: false, 
      zoomControl: true 
     }; 
    } 
    map.setOptions(mapOptions); 
} 

A potem wykorzystać to w swoich imprez, takich jak ten (jest zmienna Marker):

google.maps.event.addListener(marker, 'dragstart', function() { 
    disableMovement(true); 
}); 

google.maps.event.addListener(marker, 'dragend', function() { 
    disableMovement(false); 
}); 
+0

OK - ale jaki jest atrybut wyłączania ruchu mapy? – Thomas1703

+2

@ Thomas1703 To naprawdę połączenie MapOptions. Ustawienie "przeciągania" na "fałsz", na przykład, wyłącza panoramowanie. Ustawienie 'scrollwheel' na 'false' wyłącza używanie kółka myszy do przybliżania. 'disableDoubleClickZoom' sprawia, że ​​użytkownik nie może podwójnie kliknąć myszką, aby powiększyć, więc ustaw ją na 'true'. I dla kompletności wyłącz 'zoomControl' ustawiając go na 'false', aby kontrolki zoomu na mapie były ukryte. Wszystkie te elementy powinny ograniczać użytkownika przed przenoszeniem mapy. W przypadku przeciągania zmień wszystkie te atrybuty na domyślne. Czytaj dokumenty, aby dowiedzieć się, jakie ustawienia MapOptions ustawić. – Gady

+0

@ Thomas1703 Zaktualizowałem swoją odpowiedź przykładowym kodem przy użyciu metody setOptions. – Gady

3

gmap.setOptions ({ 'scrollwheel': false});