【发布时间】:2019-12-13 13:45:36
【问题描述】:
尝试将Leaflet map 输入PrimeFaces Dialog。我有一个渲染不正确的问题。地图位置不正确,看起来地图相对于 index.html 而不是对话框开始定位。下一个问题:尺寸不正确。对话之外的相同代码可以正常工作。如何改变这个?
<h:head>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.css" />
</h:head>
<h:body>
<ui:composition>
<script src="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.js"></script>
<p:dialog id="map" header="Mapa:" widgetVar="wigetMapDialog" height="800px" width="1200px" showEffect="clip" hideEffect="clip" resizable="false" closable="true" dynamic="true" modal="true">
<div id="mapid" style="width: 1180px; height: 780px;"></div>
<script>
var mymap = L.map('mapid').setView([50.9547215, 16.9126256], 18);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(mymap);
</script>
</p:dialog>
</ui:composition>
</h:body>
</html>
我的对话:
当我在里面移动地图时:
【问题讨论】:
-
看起来像是缺少 Leaflet CSS 文件的症状。
-
这能回答你的问题吗? Vue Leaflet map tiles in wrong order
-
没有,但是改变了一点结果。但它仍然是不正确的。
-
当更改浏览器窗口大小(例如:全屏)时,地图再次渲染,然后它看起来没问题
-
...这是缺少地图容器初始大小的症状,可以使用
invalidateSize()解决,请参阅stackoverflow.com/questions/41742326/…
标签: html css primefaces leaflet