Quando una pagina HTML contiene una mappa e l'utente scorre la pagina utilizzando la rotellina del mouse, quando il mouse dell'utente passa sulla mappa la pagina smetterà di scorrere mentre la mappa stessa verrà spostata. Vedi Demo1 .
Vorrei emulare il comportamento dettagliato in Un semplice trucco di usabilità per Google Maps utilizzando ArcGIS Server JS API 3.x.
Cioè, la pagina dovrebbe scorrere a meno che l'utente non trascini esplicitamente all'interno della mappa, nel qual caso la mappa dovrebbe essere spostata .
Il comportamento è quasi lì in Demo2 , dove la pagina scorre anche se il mouse si trova sulla mappa.
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();
});
});
Tuttavia, il pan della mappa non è abilitato a meno che non si faccia prima clic una volta all'interno della mappa, si rilasci il pulsante del mouse e quindi il pan. È possibile ottenere l'effetto continuo mostrato con Google Maps nel post del blog?
Ho provato il mouse-drag
, mouse-drag-start
e mouse-down
gli eventi ma il comportamento è lo stesso per tutti gli eventi.
enableMapNavigation
a ricominciare subito dopo l'mouse-drag-start
evento. Ho trovato dojotoolkit.org/reference-guide/1.10/dojo/Evented.html come classe dojo per emettere eventi. Quindi trascinerai (o fai clic) sulla mappa -> abilita la navigazione della mappa -> nella stessa funzione invoca l'evento di trascinamento (potrebbe essere in grado di invocare o richiedere parametri) -> trascina il trascinamento della tua attività. Potrebbe essere in grado di sollevare il mouse verso il basso e trascinarlo con sé. Potrebbe essere solo una combinazione di provare quegli eventi in diversi ordini, ecc.