2010-07-27 10 views
6

Buduję witrynę i mam stronę, która pobiera adres i używa go do wygenerowania mapy drogowej 2D mapy google-map, a następnie do widoku ulicy dla tego adresu.Czy ScrollWheel może być wyłączony w niestandardowym widoku ulicy?

Mój problem polega na tym, że te dwie mapy rozciągają się na prawie całą szerokość witryny, a użytkownik prawdopodobnie przejdzie przez nią, przewijając stronę i dezorientując się niezdolnością do przewijania dalej (podczas powiększania Mapa).

Wyłączenie to na mapie 2D była dość ciasna naprzód

//works to disable scroll wheel in 2D map 
var mapOptions = { 
    zoom: 12, 
    center: latlng, 
    scrollwheel: false, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

//not working to disable scroll wheel in panorama 
var panoramaOptions = { 
    position: results[0].geometry.location, 
    scrollwheel: false 
}; 

panorama = new google.maps.StreetViewPanorama(document.getElementById("map_canvas2"), panoramaOptions); 

ale widok ulicy wydaje się nie pozwoli mi wyłączyć kółka za pomocą tych opcji i nie jestem w stanie znaleźć rozwiązanie tego problemu w google-docs. Czy ktoś wie, czy można to zrobić, czy sugestie, jak do niego podejść?

Odpowiedz

3

Mam ten sam problem, gdy użytkownik przewija w dół za pomocą kółka myszy, kursor zostanie pochwycony w widoku ulicy Google i zacznie powiększać zamiast przewijać stronę.

W serwisie Mapy Google udostępniają właściwość scrollwheel, która może wyłączyć tę funkcję, ale niestety nie wydaje się, aby była ona zaimplementowana w widoku ulicy.

Jedyne obejście, które znalazłem od teraz, jak powiedział @bennedich w poprzedniej odpowiedzi, umieściłem pusty/przejrzysty div dokładnie nad div widoku ulicy.

Włączam elementy sterujące, gdy użytkownik kliknie w dowolnym miejscu obszaru widoku ulicy, za pomocą jQuery, aby ukryć ten pusty div (przy użyciu właściwości widoczności css) na mousedown wydarzeniu, a gdy użytkownik przesunie jego mysz, umieszczam ten pusty element div wstecz. Co oznacza, że ​​za każdym razem, gdy użytkownik chce wejść w interakcję z kontrolką Street View, musi kliknąć raz. To nie jest najlepsze rozwiązanie, ale lepsze to niż złapanie myszki podczas przewijania

0

Nie wiem o sposobie javascript, ale z html i css możesz umieścić niewidoczny div z wyższym indeksem Z na mapie/streetview.

+1

Wielki sugestia, że ​​nie będzie wyłączyć wszystkie interakcje z widoku ulicy? – DeviousBlue

10

Pojawiło się żądanie funkcji z problemami GMaps API v3, aby dodać scrollwheel: false do widoku ulicy http://code.google.com/p/gmaps-api-issues/issues/detail?id=2557. To jest teraz naprawione, po prostu użyj scrollwheel: false w swoich opcjach StreetViewPanorama.

+1

Dzięki za aktualizację! Dodam to do mojej witryny zamiast mojego obejścia. Uwielbiam kiedy funkcje muszę dodać do API ;-) – DeviousBlue

+0

Dzięki, Frank. Cieszę się, że w końcu dodali to, jedną linię kodu i mogę usunąć całe nieudane obejście. – manubkk

+2

To jest teraz poprawna odpowiedź i powinna być oznaczona jako taka. Zauważam jednak, że zjada zdarzenia przewijania, a więc przewijanie zatrzymuje się, kiedy już tam dotrzesz. Chociaż eliminuje irytujący błąd, gdy pojawia się błąd, nadal jest, IMHO, błędem. – dudewad

0

Firma Google opracowała łatę rozwiązującą ten problem.

Rozwiązaniem, które działa na razie, jest ustawienie numeru wersji jawnie na 3.25 dla pracy scrollwheel: false.

Przykład: https://maps.googleapis.com/maps/api/js?key=XXX&v=3.25

+0

Wow! dziękuję za aktualizację tego bardzo starego pytania, miło wiedzieć, że planują rozwiązać ten problem. – DeviousBlue

Powiązane problemy