Gdy strona HTML zawiera mapę, a użytkownik przewija stronę w dół za pomocą kółka myszy, gdy mysz przesunie się nad mapą, strona przestanie się przewijać, a sama mapa przesunie się. Zobacz Demo1 .
Chciałbym emulować zachowanie wyszczególnione w Prosta sztuczka użyteczności dla Google Maps przy użyciu ArcGIS Server JS API 3.x.
Oznacza to, że strona powinna się przewijać, chyba że użytkownik wyraźnie przeciągnie wewnątrz mapy, w którym to przypadku mapa powinna się przesuwać .
Zachowanie jest prawie obecne w Demo2 , gdzie strona przewija się, nawet jeśli wskaźnik myszy znajduje się nad mapą.
map.on("load", function(){
// Disable navigation by default, so scrolling the page doesn't scroll the map
map.disableMapNavigation();
// When the user tries to pan the map, allow this
map.on('mouse-drag-start', function(){
map.enableMapNavigation();
});
// Restore the no-scroll behaviour when the mouse leaves the map
map.on('mouse-out', function(){
map.disableMapNavigation();
});
});
Jednak panoramowanie mapy nie jest włączone, chyba że najpierw klikniesz raz na mapie, zwolnisz przycisk myszy, a następnie panoramujesz. Czy jest możliwe osiągnięcie płynnego efektu pokazanego w Mapach Google w poście na blogu?
Próbowałem mouse-drag
, mouse-drag-start
i mouse-down
wydarzeń, ale zachowanie jest takie samo dla wszystkich zdarzeń.
źródło
enableMapNavigation
od razu po ponownym wywołaniumouse-drag-start
wydarzenia. Znalazłem dojotoolkit.org/reference-guide/1.10/dojo/Evented.html jako klasę dojo do emitowania zdarzeń. Przeciągniesz (lub klikniesz) na mapę -> włączysz nawigację po mapie -> w tej samej funkcji wywołasz zdarzenie przeciągania (może być w stanie po prostu wywołać lub może wymagać parametrów) -> zajmij się przeciąganiem firmy. Może być w stanie podnieść mysz i przeciągnąć nią. Może to być kombinacja wypróbowania tych wydarzeń w różnych zamówieniach itp.Odpowiedzi:
Nigdy nie podajesz powodu używania metody dis / enableMapNavigation zamiast metody dis / enableScrollWheelZoom . Użyj tego drugiego.
źródło
map.disablePan();
nie dotyczy kółka przewijania, tylko przeciąganie do przesuwania: jsfiddle.net/g7npfuvn/16smartNavigation
działa: Gdy jest to prawda, w przypadku komputerów Apple z gładzikiem lub magiczną myszą przesuń palcem zamiast powiększania . Jeśli ustawię to na false i przetestuję na komputerze, to zadziała. Wygląda na to, że jest to ograniczenie interfejsu API ArcGIS Server JS na komputerze Mac.