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();
});
});
ただし、最初にマップ内で1回クリックし、マウスボタンを離してからパンしない限り、マップのパンは有効になりません。ブログの投稿でGoogleマップに示されているシームレスな効果を実現することは可能ですか?
私が試したmouse-drag
、mouse-drag-start
とmouse-down
イベントが、動作はすべてのイベントで同じです。
enableMapNavigation
を再度呼び出した直後に試すことができますmouse-drag-start
。私はdojotoolkit.org/reference-guide/1.10/dojo/Evented.htmlを、イベントを発生させるdojoクラスとして見つけました。したがって、マップ上でドラッグ(またはクリック)します->マップナビゲーションを有効にします->同じ関数でドラッグイベントを呼び出します(単に呼び出すことができるか、パラメータを必要とする場合があります)->ビジネスのドラッグに取り掛かります。マウスを下に持ち上げてドラッグできる場合があります。これらのイベントをさまざまな順序で試すコンボのようなものになるかもしれません