Як запобігти панорамуванню карти під час прокрутки сторінки


10

Коли на 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подія , але поведінка є однаковим для всіх подій.


1
Ви можете спробувати, коли вам enableMapNavigationпотрібно негайно після повторного відкликання mouse-drag-startподії. Я знайшов dojotoolkit.org/reference-guide/1.10/dojo/Evented.html як клас доджо для передачі подій. Таким чином, ви перетягнете (або натисніть) на карту -> увімкніть навігацію по карті -> в тій же функції виклик події перетягування (можливо, ви зможете просто викликати або вимагати парами) -> займіться перетягуванням вашого бізнесу. Можливо, вона зможе забрати мишу вниз і перетягнути її. Може бути просто комбінацією випробування цих подій у різних порядках тощо.
Бранко

Відповіді:


2

Ви ніколи не даєте причин використовувати метод dis / enableMapNavigation, а не метод dis / enableScrollWheelZoom . Використовуйте останнє.


На жаль, це не працює, оскільки (1) поведінка карти за замовчуванням - це панорамування (не масштабування), коли використовується колесо прокрутки, і (2) map.disablePan();не застосовується до колеса прокрутки, лише перетягування на панораму: jsfiddle.net/g7npfuvn/16
Стівен Ведучий

Так, проблема полягає в тому, що я тестував на Mac, де smartNavigationнабуває чинності: коли це правда, для комп'ютерів Apple, які використовують трекпад або чарівну мишу, проведіть пальцями замість масштабування . Якщо я встановив це значення false, і тестувати на ПК, він працює. Так виглядає, що це обмеження API ArcGIS Server JS на Mac.
Стівен Ведучий

Якщо ви встановите значення false, тоді вам слід бачити однакову поведінку незалежно від обладнання OS +. Подумайте про прослуховування події в русі мишею та при виявленні відключення smartNav, як це було зроблено тут .
Зак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.