私のWebアプリケーションでは、ユーザーがマップコンテナーのサイズを設定できるようにします。
コンテナをわずかに拡張したときにすべてが正常に機能しました(これは、境界線のすぐ後ろにあるタイルが既に読み込まれているためです)。ただし、コンテナが大幅に拡張された場合(次の例では、幅が300〜1000ピクセル)、空白が残ります。
マップを再描画して新しいサイズに適応させる方法は?
redraw()
すべてのレイヤーを呼び出すことは役に立ちませんでした。ズームインもズームアウトもしませんでした。
Opera、Chrome、Firefoxで説明した結果でこれをテストしました。IE8では、驚くべきことに、問題は発生せず、マップは自動的に適合しました。
テスト用の簡略化されたWebページ:
<html>
<head>
<style>
#mapbox {
width: 300px;
height: 500px;
border: 1px solid black;
}
</style>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
</head>
<body>
<div id="mapbox"></div>
<input type="button" id="test" value="resize">
<script>
var map = new OpenLayers.Map('mapbox');
map.addLayer(new OpenLayers.Layer.OSM());
map.setCenter(
new OpenLayers.LonLat(1000000, 7000000), 5);
document.getElementById('test').onclick = function() {
document.getElementById('mapbox').style.width = '1000px';
}
</script>
</body>
</html>