bootstrap div 中未显示传单地图
Leaflet Map not showing in bootstrap div
这是一个我想不通的超级奇怪的问题。我有我的 div 地图及其 css 样式。 Leaflet 地图显示在一个矩形中,而不是 div。好像 z 索引是错误的,但我无法弄清楚。
JS在document.ready函数中。我在地图周围添加了一个边框 div 只是为了显示一切都离得很远。
CSS:
#map {width:100%;height:100%;margin-left:10px;margin-top:40px}
HTML:
<div id="showTravel" class="row" style="display:none">
<div class="col-lg-12">
<div class="wrapper wrapper-content">
<h2 style="margin-top:-18px">All Travelers</h2>
<div id="travelContent">
<div id=map></div>
</div>
</div>
</div>
</div>
JS:
var map=L.map('map',{
minZoom:2,
maxZoom:18
}).setView([x,y],16);
var buildingIcon=L.icon({
iconUrl:'/images/bicon.png',
iconSize:[25,40],
popupAnchor: [-3, -20],
iconAnchor: [14, 38]
});
L.marker(x,y],{
icon:buildingIcon,
title:'town, state'
})
.bindPopup('<b>first last</b><br>Email: email address<br>Cell: phone number')
.addTo(map);
mapLink='<a href="http://openstreetmap.org">OpenStreetMap</a>';
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'Map data © ' + mapLink,
maxZoom:18
}).addTo(map);
我已经解决了重叠问题,但最后一个问题仍然存在,即
当页面加载并且地图呈现在 document.ready()
上时,地图仅在屏幕的 左上角 可见。如果我更改浏览器的大小(最大化、最小化),则地图会正确刷新。
打开地图后执行以下函数:
map.invalidateSize();
这将解决您的问题。
我将它与隐藏的 div 一起使用,它们会在单击后出现。这些图块也不可见,因此我将 map.invalidateSize() 添加到 jQuery 函数中,其中 div 设置为可见。希望对您有所帮助...
这对我有用,
$('#showTravel').on('shown.bs.modal', function (e) {
//creation of map
})
或搜索显示 div 的事件并进入创建地图的函数
我在 Bootstrap 选项卡中显示地图时遇到同样的问题。我已经使用 -
修复了它
$('#gmap').on('shown.bs.tab', function (e) {
//clear map first
clearMap();
//resize the map
map.invalidateSize(true);
//load the map once all layers cleared
loadMap();
})
这是一个我想不通的超级奇怪的问题。我有我的 div 地图及其 css 样式。 Leaflet 地图显示在一个矩形中,而不是 div。好像 z 索引是错误的,但我无法弄清楚。
JS在document.ready函数中。我在地图周围添加了一个边框 div 只是为了显示一切都离得很远。
CSS:
#map {width:100%;height:100%;margin-left:10px;margin-top:40px}
HTML:
<div id="showTravel" class="row" style="display:none">
<div class="col-lg-12">
<div class="wrapper wrapper-content">
<h2 style="margin-top:-18px">All Travelers</h2>
<div id="travelContent">
<div id=map></div>
</div>
</div>
</div>
</div>
JS:
var map=L.map('map',{
minZoom:2,
maxZoom:18
}).setView([x,y],16);
var buildingIcon=L.icon({
iconUrl:'/images/bicon.png',
iconSize:[25,40],
popupAnchor: [-3, -20],
iconAnchor: [14, 38]
});
L.marker(x,y],{
icon:buildingIcon,
title:'town, state'
})
.bindPopup('<b>first last</b><br>Email: email address<br>Cell: phone number')
.addTo(map);
mapLink='<a href="http://openstreetmap.org">OpenStreetMap</a>';
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'Map data © ' + mapLink,
maxZoom:18
}).addTo(map);
我已经解决了重叠问题,但最后一个问题仍然存在,即
当页面加载并且地图呈现在 document.ready()
上时,地图仅在屏幕的 左上角 可见。如果我更改浏览器的大小(最大化、最小化),则地图会正确刷新。
打开地图后执行以下函数:
map.invalidateSize();
这将解决您的问题。
我将它与隐藏的 div 一起使用,它们会在单击后出现。这些图块也不可见,因此我将 map.invalidateSize() 添加到 jQuery 函数中,其中 div 设置为可见。希望对您有所帮助...
这对我有用,
$('#showTravel').on('shown.bs.modal', function (e) {
//creation of map
})
或搜索显示 div 的事件并进入创建地图的函数
我在 Bootstrap 选项卡中显示地图时遇到同样的问题。我已经使用 -
修复了它 $('#gmap').on('shown.bs.tab', function (e) {
//clear map first
clearMap();
//resize the map
map.invalidateSize(true);
//load the map once all layers cleared
loadMap();
})