キャンバスのサイズ変更でマップを再描画/更新する方法は?


9

マップを全画面に設定して通常の形式に戻すためのボタンを含むWebページを作成しました。問題を解決するには、出力ウィンドウのサイズを変更するまで、問題の地図は全画面に設定されません。

ガイダンスとヘルプを歓迎します。

これが実際の例です:デモ


回答:


13

map.updateSize();の最後に追加$("#btn-full-screen").click...

デモ

updateSizeドキュメント

この関数は、マップdivのサイズを動的に変更する外部コードから呼び出す必要があります(モジラでは要素の「onresize」をキャッチできないため)


5

OpenLayers.Map.updateSizeメソッドを使用して、マップを最大化するときにベースレイヤーを再描画できます。

したがって、次のような関数を追加します。

var fullScreen = function () {
    map.baseLayer().redraw();
}

地図にオプションを追加するだけです:

var map = new OpenLayers.Map({
    div: "map",
    center: new OpenLayers.LonLat(0, 0),
    updateSize: fullScreen,
    minResolution: "auto",
    minExtent: new OpenLayers.Bounds(-1, -1, 1, 1),
    maxResolution: "auto",
    maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
    projection: Mercator,
    displayProjection: Geographic
});

幸運を!


マップが全画面に設定されていません。フィドルを更新してください。
bios

ありがとう。を使用してズームすると、タイルが白くなるtransitionEffect: 'resize'map.baseLayer().redraw();修正しました。
Nicolas Boisteault 2016年

0

ウィンドウのサイズ変更、タブの変更、全画面表示など、必要に応じて他のイベントのように、マップを再描画する必要がある場合はいつでも、次のコードを記述してください。

$(window).trigger('resize');

これにより、自動的にupdateSize()関数がトリガーされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.