Cuando una página HTML contiene un mapa, y el usuario se desplaza hacia abajo usando la rueda del mouse, cuando el mouse del usuario pasa sobre el mapa, la página dejará de desplazarse mientras el mapa se desplazará. Ver demostración1 .
Me gustaría emular el comportamiento detallado en Un simple truco de usabilidad para Google Maps utilizando ArcGIS Server JS API 3.x.
Es decir, la página debe desplazarse a menos que el usuario arrastre explícitamente dentro del mapa, en cuyo caso el mapa debería desplazarse .
El comportamiento está casi ahí en Demo2 , donde la página se desplaza incluso si su mouse está sobre el mapa.
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();
});
});
Sin embargo, la panorámica del mapa no está habilitada a menos que primero haga clic una vez dentro del mapa, suelte el botón del mouse y luego realice una panorámica. ¿Es posible lograr el efecto continuo que se muestra con Google Maps en la publicación del blog?
Probé el mouse-drag
, mouse-drag-start
y mouse-down
eventos, pero el comportamiento es el mismo para todos los eventos.
fuente
enableMapNavigation
inmediatamente después de volver a invocar elmouse-drag-start
evento. Encontré dojotoolkit.org/reference-guide/1.10/dojo/Evented.html como una clase de dojo para emitir eventos. Por lo tanto, debería arrastrar (o hacer clic) en el mapa -> habilitar la navegación del mapa -> en la misma función, invocar el evento de arrastre (podría invocar o requerir parámetros) -> continuar arrastrando su negocio. Es posible que pueda levantar el mouse y arrastrarlo. Podría ser un combo de tratar esos eventos en diferentes órdenes, etc.Respuestas:
Nunca da una razón para usar el método dis / enableMapNavigation en lugar del método dis / enableScrollWheelZoom . Usa el último.
fuente
map.disablePan();
no se aplica a la rueda de desplazamiento, solo arrastrar para desplazar: jsfiddle.net/g7npfuvn/16smartNavigation
surte efecto: cuando es cierto, para computadoras Apple con un trackpad o un mouse mágico, deslice las bandejas en lugar de hacer zoom . Si configuro esto como falso y pruebo en una PC, funciona. Por lo tanto, parece que esto es una limitación de la API JS de ArcGIS Server en una Mac.