Коли на HTML-сторінці міститься карта, і користувач прокручує сторінку вниз за допомогою колеса миші, коли миша користувача переходить на карту, сторінка перестане прокручуватися, тоді як сама карта буде панувати. Дивіться Demo1 .
Я хотів би наслідувати поведінку, детально описану в простому фокусі зручності використання для Карт Google за допомогою API ArxGIS Server 3.x.
Тобто сторінка повинна прокручуватися, якщо користувач явно не перетягне всередину карти, і в такому випадку карта повинна розміщуватися .
Поведінка майже є в Demo2 , де сторінка прокручується, навіть якщо миша перебуває над картою.
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();
});
});
Однак панель карт не ввімкнена, якщо спочатку не натиснути один раз у межах карти, не відпустити кнопку миші, а потім перемістити панораму. Чи можна досягти безшовного ефекту, показаного на Картах Google у публікації блогу?
Я спробував mouse-drag
, mouse-drag-start
і mouse-down
подія , але поведінка є однаковим для всіх подій.
enableMapNavigation
потрібно негайно після повторного відкликанняmouse-drag-start
події. Я знайшов dojotoolkit.org/reference-guide/1.10/dojo/Evented.html як клас доджо для передачі подій. Таким чином, ви перетягнете (або натисніть) на карту -> увімкніть навігацію по карті -> в тій же функції виклик події перетягування (можливо, ви зможете просто викликати або вимагати парами) -> займіться перетягуванням вашого бізнесу. Можливо, вона зможе забрати мишу вниз і перетягнути її. Може бути просто комбінацією випробування цих подій у різних порядках тощо.