Lorsqu'une page HTML contient une carte et que l'utilisateur fait défiler la page à l'aide de la molette de sa souris, lorsque la souris de l'utilisateur passe sur la carte, la page cesse de défiler tandis que la carte elle-même se déplace. Voir Demo1 .
Je voudrais émuler le comportement détaillé dans Une simple astuce d'utilisation pour Google Maps en utilisant ArcGIS Server JS API 3.x.
Autrement dit, la page doit défiler à moins que l'utilisateur ne traîne explicitement dans la carte, auquel cas la carte doit se déplacer .
Le comportement est presque là dans Demo2 , où la page défile même si votre souris survole la carte.
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();
});
});
Toutefois, le panoramique de la carte n'est activé que si vous cliquez d'abord une fois dans la carte, relâchez le bouton de la souris, puis effectuez un panoramique. Est-il possible d'obtenir l'effet transparent montré avec Google Maps dans le billet de blog?
J'ai essayé le mouse-drag
, mouse-drag-start
et les mouse-down
événements , mais le comportement est le même pour tous les événements.
la source
enableMapNavigation
revoquez immédiatement l'mouse-drag-start
événement. J'ai trouvé dojotoolkit.org/reference-guide/1.10/dojo/Evented.html en tant que classe dojo pour émettre des événements. Vous devez donc faire glisser (ou cliquer) sur la carte -> activer la navigation dans la carte -> dans la même fonction, invoquer l'événement de glisser (vous pouvez peut-être simplement invoquer ou nécessiter des paramètres) -> vaquer à vos occupations en faisant glisser. Il peut être capable de décrocher la souris et de la faire glisser avec. Peut-être juste un combo d'essayer ces événements dans des ordres différents, etc.Réponses:
Vous ne donnez jamais de raison d'utiliser la méthode dis / enableMapNavigation plutôt que la méthode dis / enableScrollWheelZoom . Utilisez ce dernier.
la source
map.disablePan();
ne s'applique pas à la molette de défilement, mais uniquement à glisser-déplacer: jsfiddle.net/g7npfuvn/16smartNavigation
prend effet: lorsque cela est vrai, pour les ordinateurs Apple avec un trackpad ou une souris magique, faites glisser les panoramiques au lieu de zoomer . Si je mets ceci sur faux et que je teste sur un PC, cela fonctionne. Il semble donc qu'il s'agit d'une limitation de l'API ArcGIS Server JS sur un Mac.