Wenn eine HTML-Seite eine Karte enthält und der Benutzer mit dem Mausrad die Seite nach unten scrollt, hört die Seite auf zu scrollen, während die Karte selbst schwenkt, wenn die Maus des Benutzers über die Karte fährt. Siehe Demo1 .
Ich möchte das unter Ein einfacher Usability-Trick für Google Maps mit der ArcGIS Server JS API 3.x beschriebene Verhalten emulieren .
Das heißt, die Seite sollte einen Bildlauf durchführen, es sei denn, der Benutzer zieht explizit innerhalb der Karte. In diesem Fall sollte die Karte schwenken .
Das Verhalten ist in Demo2 fast vorhanden , wo die Seite auch dann gescrollt wird , wenn sich Ihre Maus über der Karte befindet.
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();
});
});
Das Schwenken der Karte ist jedoch nur aktiviert, wenn Sie zuerst einmal in die Karte klicken, die Maustaste loslassen und dann schwenken. Ist es möglich, den nahtlosen Effekt zu erzielen, der mit Google Maps im Blogbeitrag angezeigt wird?
Ich habe die und Ereignisse ausprobiert mouse-drag
, aber das Verhalten ist für alle Ereignisse gleich.mouse-drag-start
mouse-down
quelle
enableMapNavigation
sofort nach dem erneuten Aufrufen desmouse-drag-start
Ereignisses. Ich fand dojotoolkit.org/reference-guide/1.10/dojo/Evented.html als Dojo-Klasse, um Ereignisse auszugeben . Sie würden also auf die Karte ziehen (oder darauf klicken) -> die Kartennavigation aktivieren -> in derselben Funktion das Drag-Ereignis aufrufen (möglicherweise nur Parameter aufrufen oder Parameter benötigen) -> Ihr Unternehmen ziehen. Möglicherweise kann es mit der Maus nach unten greifen und mitziehen. Könnte nur eine Kombination aus dem Ausprobieren dieser Ereignisse in verschiedenen Reihenfolgen usw. seinAntworten:
Sie geben niemals einen Grund für die Verwendung der dis / enableMapNavigation- Methode anstelle der dis / enableScrollWheelZoom- Methode an. Verwenden Sie letzteres.
quelle
map.disablePan();
nicht für das Scrollrad gilt, sondern nur zum Schwenken: jsfiddle.net/g7npfuvn/16smartNavigation
wirksam wird: Wenn dies zutrifft, streichen Sie bei Apple-Computern mit Trackpad oder magischer Maus die Schwenks, anstatt zu zoomen . Wenn ich dies auf false setze und auf einem PC teste, funktioniert es. Es sieht also so aus, als wäre dies eine Einschränkung der ArcGIS Server JS-API auf einem Mac.