3

ユーザーがマップを操作して現在のビューを変更するまで、ウィンドウのサイズ変更やタブレットの向きの変更を行っても、特定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
}
4

1 に答える 1

0

仕事に取り組めそうにない場合はtargetviewchanged、他のイベントの追跡を再検討する価値があるかもしれません。

pointer.jsを使用すると、可能なすべての相互作用をより簡単に追跡できる場合があります。このように、内部では多くの種類のイベントを表すいくつかの種類のイベントをキャプチャするだけで済みます。Bing Maps とうまく連携できれば、マウス、タッチ、およびジェスチャ イベントの問題が解決される可能性があります。

それはおそらくキーボードイベントの問題を解決しないと思いますが、おそらくそれらを監視することも管理可能です.

于 2012-08-01T03:19:01.433 に答える