Когда страница HTML содержит карту, и пользователь прокручивает страницу с помощью колесика мыши, когда мышь пользователя проходит над картой, страница перестает прокручиваться, а сама карта перемещается. Смотрите Demo1 .
Я хотел бы эмулировать поведение, подробно описанное в Простом приеме юзабилити для Карт Google, с использованием ArcGIS Server JS API 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 Maps в записи блога?
Я пытался mouse-drag
, mouse-drag-start
и mouse-down
события, но поведение одинаково для всех событий.
источник
enableMapNavigation
сразу же после повторного вызоваmouse-drag-start
события. Я нашел dojotoolkit.org/reference-guide/1.10/dojo/Evented.html как класс dojo для генерации событий. Таким образом, вы должны перетащить (или щелкнуть) на карте -> включить навигацию по карте -> в той же функции вызвать событие перетаскивания (может быть в состоянии просто вызвать или могут потребоваться параметры) -> продолжить перетаскивание своего бизнеса. Это может быть в состоянии поднять на мышь вниз и перетащить с ним. Может быть, это просто комбинация из этих событий в разных порядках и т. Д.Ответы:
Вы никогда не указываете причину использования метода dis / enableMapNavigation, а не метода dis / enableScrollWheelZoom . Используйте последнее.
источник
map.disablePan();
не применяется к колесу прокрутки, только перетаскивание: jsfiddle.net/g7npfuvn/16smartNavigation
действует: если это правда, для компьютеров Apple с трекпадом или волшебной мышью, проведите панорамированием вместо увеличения . Если я установлю это в false и протестирую на ПК, это будет работать. Похоже, что это ограничение JS API ArcGIS Server на Mac.