我正在努力使用Bootstrap和OL3进行响应式布局。
使用http://openlayers.org/en/v3.6.0/examples/simple.html
中的简单示例当我在 Firefox (38.05,分辨率为1366x76)上打开此示例为“独立”(没有openlayers.org-layout等)时,总会有一张太大的地图(垂直滚动条) - 它超过某个窗口宽度(1200px)的窗口高度。
查看截图: imgur.com/OJV5zxQ
当我使用“容器”而不是“容器流体”类时,它正常工作。但我想要一个响应式布局,其中地图使用可用的最大空间。 关于这个问题,我找不到任何关于boostrap.css(max-width / min-width:1200px)的内容。
我想这与生成画布宽度/高度的ol.js有关。但我不确定。
<div class="container-fluid">
<div class="row">
<div class="col-lg-12 col-md-9 col-sm-9">
<div id="map">
</div>
<div id="info">
</div>
</div>
</div>
</div>
http://jsfiddle.net/b335z4n6/ 在jsfiddle它可能不起作用(我认为它的map.updateSize()相关),所以只需将简单示例的代码复制到html文件中并打开它。
<!DOCTYPE html>
<html>
<head>
<title>Simple example</title>
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.6.0/ol.css" type="text/css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.6.0/ol.js"></script>
<style>
* { margin:0; padding:0; } /* to remove the top and left whitespace */
html { height: 100%; }
body {
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
}
.container-fluid {
max-width: 99%;
max-height: 99%; //this removes the "initial" scrollbar on Chromium but not on FF
}
</style>
<style>
@media (min-width: 1200px) {
.container-fluid {
border:1px solid red;
}
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div id="map" class="map"></div>
</div>
</div>
</div>
<script>
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
controls: ol.control.defaults({
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
collapsible: false
})
}),
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
</script>
</body>
</html>
答案 0 :(得分:0)
上述问题仅在OL-Container(此处为#map)没有给定固定高度时出现,例如:
<div id="map" style="height:500px;"></div>
目前我将使用jquery $(window).height()函数并将值放入#map-container。
似乎&#34;修复&#34;它 - 到目前为止不是最好的解决方案......