ユーザーがマップを操作して現在のビューを変更するまで、ウィンドウのサイズ変更やタブレットの向きの変更を行っても、特定LocationRect
のベスト フィット (つまり の結果) をマップに表示し続ける必要があるシナリオがあります。map.setView({ bounds: myLocationRect })
その方法については、ここでいくつかのガイダンスが必要です。マウスとキーボードのさまざまな操作によってビューが変更される可能性があることを考えると、これらの操作のすべてをフィルター処理する必要はありません。マップに含まれる HTML 要素のサイズが変化するシナリオを除外する方が適切と思われます。
targetviewchanged
マップ要素の以前の幅/高さを追跡し、イベントをリッスンすることで、これを実行しようとしました。ただし、それは私にとって確実に機能していません。その理由は、ビューをリセットすると、確実にリッスンを一時停止できないからtargetviewchanged
です。例えば:
function resetView() {
if(!_keepAoiInView) return; // unhook setInterval as well; omitted for brevity
_suspend = true;
_map.setView({ bounds: theBoundsIWant });
_suspend = false;
}
function ontargetviewchanged() {
// This suspend check doesn't work -
// resetView() isn't always lower in the call stack;
// therefore, _suspend is set back to false before the
// targetviewchanged event fires.
if(_suspend) return;
_keepAoiInView = false; // unhook setInterval as well; omitted for brevity
}