当HTML页面包含地图,并且用户使用鼠标滚轮向下滚动页面时,当用户的鼠标经过地图时,页面将停止滚动,而地图本身将平移。参见Demo1。
我想模拟使用ArcGIS Server JS API 3.x的“ 针对Google地图的简单易用性技巧”中详细介绍的行为。
也就是说,除非用户在地图中明确拖动,否则页面应滚动,在这种情况下,地图应平移。
在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类。因此,您可以在地图上拖动(或单击)->启用地图导航->在同一函数中调用拖动事件(可能仅可以调用或可能需要参数)->进行业务拖动。它可能能够在鼠标上按下并拖动。可能只是尝试按不同顺序尝试这些事件的组合,等等