W mojej aplikacji internetowej chcę umożliwić użytkownikom ustawienie rozmiaru kontenera mapy.
Wszystko działało dobrze, gdy pojemnik został nieco rozszerzony (najwyraźniej dzieje się tak, ponieważ płytki, które były tuż za granicą, były już załadowane). Jednak gdy kontener zostanie znacznie rozszerzony (w poniższym przykładzie, o szerokości od 300 do 1000 pikseli), pozostało puste miejsce.
Jak przerysować mapę i dostosować ją do nowego rozmiaru?
Wywołanie redraw()
na wszystkich warstwach nie pomogło. Przybliżanie i oddalanie też się nie zmieniło.
Testowałem to z opisanymi wynikami w Operze, Chrome i Firefox. Co zaskakujące, w IE8 problem nie wystąpił, a mapa automatycznie się dostosowała.
Uproszczona strona do testowania:
<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>