2014-12-03 3 views
-1

У меня есть карта открытых слоев, отображаемая в теге <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 незапланированные вещи:

  1. просто добавление стиля к документу изменяет класс деления карты;

  2. Отделение карты по-прежнему использует «старые» границы (не центрируется правильно при масштабировании);

Может ли кто-нибудь рекомендовать более эффективную стратегию для динамического определения области просмотра в openlayers?

+1

Might [это] (Http: //dpporp.hzsmsk .cz/kra_mapa-povodnoveho-planu-orp /) быть тем, что вам нужно? Попробуйте нажать полноэкранную кнопку и изменить размер окна. –

+1

Можете ли вы не просто установить «mapdiv.style.width = newWidth» (и то же самое для высоты). Понятно, что вам нужно будет обработать это из clientHeight/Width, за исключением любых других разделов фиксированной ширины, которые у вас есть за пределами карты. Если все динамическое, вы можете получить другие divs с помощью '$ ('# div'). Height()' и дать карте div то, что осталось. –

+0

@ JohnBarça на самом деле, я очистил свой HTML и css и немного сбился с пути, я очень близок к тому, чтобы этот подход работал, если я могу исправить проблему с масштабированием. но я определенно дам вашему предложению выстрел, так как он может сократить время обработки. –

ответ

Смежные вопросы