В моем веб-приложении я хочу разрешить пользователям устанавливать размер контейнера карты.
Все работало нормально, когда контейнер был немного расширен (очевидно, это потому, что плитки, которые были сразу за границей, уже были загружены). Однако, когда контейнер значительно расширяется (в следующем примере шириной от 300 до 1000 пикселей), остается свободное место.
Как заставить карту перерисоваться и адаптироваться к новому размеру?
Обращение redraw()
ко всем слоям не помогло. Ни один не сделал увеличение и уменьшение.
Я протестировал это с описанными результатами в Opera, Chrome и Firefox. В IE8, к удивлению, проблема не возникла, и карта автоматически адаптировалась.
Упрощенная веб-страница для тестирования:
<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>