Quando uma página HTML contém um mapa e o usuário rola a página para baixo usando a roda do mouse, quando o mouse passa sobre o mapa, a página para de rolar enquanto o próprio mapa se desloca. Veja Demo1 .
Gostaria de imitar o comportamento detalhado em Um truque simples de usabilidade para o Google Maps usando a API JS do ArcGIS Server 3.x.
Ou seja, a página deve rolar , a menos que o usuário arraste explicitamente dentro do mapa; nesse caso, o mapa deve ser panorâmico .
O comportamento está quase presente no Demo2 , onde a página rola mesmo que o mouse esteja sobre o 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();
});
});
No entanto, o panorama do mapa não está ativado, a menos que você clique uma vez no mapa, solte o botão do mouse e depois faça o panorama. É possível obter o efeito contínuo mostrado no Google Maps na postagem do blog?
Eu tentei os eventos mouse-drag
, mouse-drag-start
e mouse-down
mas o comportamento é o mesmo para todos os eventos.
enableMapNavigation
imediatamente após reinvocar omouse-drag-start
evento. Encontrei dojotoolkit.org/reference-guide/1.10/dojo/Evented.html como uma classe dojo para emitir eventos. Assim, você arrasta (ou clica) no mapa -> habilita a navegação no mapa -> na mesma função, invoca o evento de arrastar (pode ser capaz de invocar ou pode exigir parâmetros) -> continua arrastando seus negócios. Pode ser possível pegar o mouse e arrastar com ele. Pode ser apenas uma combinação de tentar esses eventos em diferentes ordens, etc. #