Nella mia applicazione Web, voglio consentire agli utenti di impostare la dimensione del contenitore della mappa.
Tutto ha funzionato bene quando il contenitore è stato leggermente espanso (apparentemente questo perché le piastrelle che erano appena dietro il bordo erano già state caricate). Tuttavia, quando il contenitore viene espanso in modo significativo (nell'esempio seguente, da 300 a 1000 pixel di larghezza), rimane spazio vuoto.
Come ridisegnare la mappa e adattarsi alle nuove dimensioni?
Chiamare redraw()
su tutti i livelli non ha aiutato. Né lo zoom avanti e indietro.
Ho provato questo con i risultati descritti in Opera, Chrome e Firefox. In IE8, sorprendentemente, il problema non si è verificato e la mappa si è adattata automaticamente.
Una pagina web semplificata per i test:
<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>