Я использую OpenLayers для отображения карты и AdminLte для интерфейса.
Моя проблема: при сворачивании основной левой боковой панели на заданной странице все поля и то, что они содержат, меняют размер (я действительно не знаю, как это сделать), поэтому карты становятся больше. Проблема в том, что когда это происходит, все функции, отображаемые на картах, по-видимому, меняют положение и не там, где они должны быть больше.
Что бы я хотел: Чтобы перерисовать карту после сбоя боковой панели.
Любое предложение?
Я старался:
$('.navbar-collapse').on('shown.bs.collapse', function() {
map.updateSize();
});
а также:
$('.sidebar').on('shown.bs.collapse', function() {
map.updateSize();
});
но безрезультатно...
EDIT: Мой вопрос похож на этот: OpenLayers: как переориентировать координаты мыши и векторные слои после рендеринга css-рендеринга map div, но его решение не работает для меня :)
РЕДАКТИРОВАНИЕ 2: просто для того, чтобы уточнить: я думаю, что решение моей проблемы - вызвать метод map.updateSize(), когда боковая панель закончит свертывание. Проблема в том, что я не знаю, как поймать момент, когда боковая панель закончила рушиться/расширяться!
Временное решение, которое я нашел, это запустить тайм-аут, когда кнопка, запускающая боковую панель, сбрасывается, а затем вызывает метод map.updateSize():
$('.sidebar-toggle').click(function(){
setTimeout(function(){ map.updateSize(); }, 500);
});
Это работает... но это своего рода meh:/
Если вы пытаетесь перерисовать карту после сбоя боковой панели, измените обработчик событий на следующее:
$('.sidebar').on('hidden.bs.collapse', function() {
map.updateSize();
});
В соответствии со списком обработчиков событий здесь событие hidden.bs.collapse
запускается, когда элемент hidden.bs.collapse
скрыт от пользователя.
var map = new OpenLayers.Map('map');
?