Leafletjs карта-карта.invalidateSize не работает
Я использую Leafletjs с плитками Google map в своем приложении. Вот моя разметка HTML:
<div class="map-wrap" style="display: none;">
<div id="map"></div>
</div>
<div class="rightNav">
<a href="#" onclick="$.expandMap();">Expand Map</a>
</div>
в файле JavaScript, у меня есть следующий код:
$.expandMap = function() {
if ($(".rightNav").is(':visible')){
$(".map-wrap").animate({width:'70%'},'400');
$(".rightNav").hide(0);
map.invalidateSize();
//L.Util.requestAnimFrame(map.invalidateSize, map, false, map._container);
}
}
контейнер карты расширяется нормально. Но карта не расширяется. карта.invalidateSize не расширяет карту или не заполняет внешний div (контейнер). Л. Утиль.requestAnimFrame (map.invalidateSize, map, false, карта._container); также не удалось.
однако, если я изменю размер окна браузера a немного, карта заполняет внешний контейнер.
поэтому я подумал, что попытаюсь имитировать изменение размера окна программно с помощью jQuery. Но карта не расширялась.
пожалуйста, дайте мне знать, что я делаю неправильно.
2 ответов
Спасибо Yehoshaphat. Мне не нужна была полноэкранная карта. Я просто хотел немного расширить карту.
наконец, я получил его, используя приведенный ниже код:
$.expandMap = function() {
if ($(".rightNav").is(':visible')){
$(".map-wrap").animate({width:'70%'},'400');
$(".rightNav").hide(0);
setTimeout(function(){ map.invalidateSize()}, 400);
}
}
КАрта теперь расширяется, чтобы заполнить расширенное пространство внешнего контейнера. Она не очень гладкая, но работает.
моя рекомендация для вас-использовать следующий плагин:https://github.com/brunob/leaflet.fullscreen, он добавляет кнопку для полноэкранного режима, которая автоматически разворачивает карту, как на следующей карте:.