У меня есть карта открытых слоев, отображаемая в теге <div>
на странице html. Я использую стили css для назначения размеров карты, определяя класс деления карты.Обозначение ширины и высоты динамического представления окна Openlayers
<div id="map" class="largemap"></div>
где
.largemap {
width: 1200px;
height: 600px;
border: 1px solid #ccc;
}
я хочу, чтобы динамически изменять размеры карты в зависимости от размера окна пользователя, поэтому я создать элемент стиля и присвоить этот новый класс для разделения карты с помощью JavaScript:
var mapElement = document.getElementById("map");
var sheet = document.createElement('style');
var newHeight = viewportheight-400; // previously acquired - working OK
var newWidth = viewportwidth-200; // previously acquired - working OK
var styleHTML = ".custommap { width: "+newWidth+"px; height: "+newHeight+"px; border: 1px solid #ccc;}";
sheet.innerHTML = styleHTML;
document.body.appendChild(sheet);
mapElement.className = "custommap";
2 незапланированные вещи:
просто добавление стиля к документу изменяет класс деления карты;
Отделение карты по-прежнему использует «старые» границы (не центрируется правильно при масштабировании);
Может ли кто-нибудь рекомендовать более эффективную стратегию для динамического определения области просмотра в openlayers?
Might [это] (Http: //dpporp.hzsmsk .cz/kra_mapa-povodnoveho-planu-orp /) быть тем, что вам нужно? Попробуйте нажать полноэкранную кнопку и изменить размер окна. –
Можете ли вы не просто установить «mapdiv.style.width = newWidth» (и то же самое для высоты). Понятно, что вам нужно будет обработать это из clientHeight/Width, за исключением любых других разделов фиксированной ширины, которые у вас есть за пределами карты. Если все динамическое, вы можете получить другие divs с помощью '$ ('# div'). Height()' и дать карте div то, что осталось. –
@ JohnBarça на самом деле, я очистил свой HTML и css и немного сбился с пути, я очень близок к тому, чтобы этот подход работал, если я могу исправить проблему с масштабированием. но я определенно дам вашему предложению выстрел, так как он может сократить время обработки. –