I have a <div>
containing a leaflet map. Upon certain events the height of the <div>
will be altered. I'd like for the map to resize to the new dimensions of its surrounding <div>
so that the old center is centered in the resized smaller or larger map. I tried using the invalidateSize()
function, but it doesn't seem to work at all. How can I resize and center the map after that map-container-resize
event?
$mapContainer.on('map-container-resize', function () {
map.invalidateSize(); // doesn't seem to do anything
});
Edit to give more context:
The map container is styled initially as
#map-container {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
transition: height 0.5s ease-in-out;
}
After a user clicks a certain button, another panel shows at the bottom of the page and the map-container's height will be reduced to something less than 100% (say 80%).
Upon click on this button, the map-container-resize event is triggered so that I can make the map resize and center on its old (i.e. before the resizing happened) center. The map itself should then also be resized to 80% of its initial height.
The APi doc for invalidateSize
seemed to be what I wanted:
"Checks if the map container size changed and updates the map if so
[...]"
But having a look with the output of the getSize
function before and after the call to invalidateSize, nothing is different, the map remains at its old size.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…