javascript - 如何让 openlayers map 显示在 twitter bootstrap 中?

标签 javascript css twitter-bootstrap-3 openlayers

在 Twitter Bootstrap 页面中,我在一行中有一个 12 宽的列。 12 宽列上方是导航栏。该列中是一个开放的图层 map ,我需要该列占据导航栏下方保留的整个垂直空间。这是行不通的。 map div 显示为 0px 高度。我在网上找到的唯一解决方法是在 html、正文和 map div 上添加 100% 的宽度。这使得 map div 跨越整个文档,而不仅仅是它所在的列。感谢您提供任何有用的指示。

Bootstrap 版本:3.0.3 ol版本:2.13.1

这没有帮助 http://openlayers.org/dev/examples/bootstrap.html

<!DOCTYPE html>
<html lang="en" class="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">

<title>Fixed Top Navbar Example for Bootstrap</title>

<!-- Bootstrap core CSS -->
<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->

</head>

<body class="">

<nav class="navbar navbar-default" role="navigation">
<div class="navbar-header">
    <a class="navbar-brand" href="#">Nav</a>
</div>
</nav>


<div style="padding: 0 15px">
<div class="row" style="">
    <div class="col col-md-12">
        <div id="mapDiv"></div>
    </div>

</div>
</div>
<!-- /container -->

<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="/js/OpenLayers/OpenLayers.debug.js"></script>
<script src="/js/jquery-1.10.2.js"></script>
<script src="/bootstrap/js/bootstrap.js"></script>
<script src="/view/home/presenter.js"></script>
<script>
(function () {
        console || console.log(mapDiv);
        var osm = new OpenLayers.Layer.OSM();

        var map = new OpenLayers.Map({
            div: "mapDiv",
            layers:[osm]
        });


        map.zoomToMaxExtent();
  })();
</script>
</body>
</html>

最佳答案

您引用的示例使用 Bootstrap 版本 2.2.1。您正在使用 Bootstrap 3.0.3。 Twitter 的 Bootstrap 第 2 版和第 3 版之间有很多变化,另请参见:Updating Bootstrap to version 3 - what do I have to do?

在你的情况下开始阅读:http://getbootstrap.com/getting-started/#third-parties

Openlayers 的javascript 添加一个类olMap<div id="mapDiv"></div>使用 CSS 设置它的高度/宽度,例如:

div.olMap
{
  cursor: default;
  height: 500px;
  margin: 0 !important;
  padding: 0 !important;
  width: 100%;
  z-index: 0;
}

注意你的行和列的 html 看起来很奇怪,试试:

<div class="container">
  <div class="row">
    <div class="col-md-12">
      <div id="mapDiv"></div>
    </div>
  </div>
</div>

关于javascript - 如何让 openlayers map 显示在 twitter bootstrap 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20477778/

相关文章:

iPhone 网页版,推荐px 还是%?

javascript - 在 Bootstrap Modal 中动态更新按钮 onclick

css - 无法在 Twitter Bootstrap 中垂直居中图像旁边的文本

javascript - 如何将 Kalendae 的日期设置为 17 年前?

javascript - 在事件中更改 jQuery 的 $(this) 对象的值

javascript - onload 属性在 jsp 中不起作用

javascript - Create.js 和 Animate CC -> 导航到 "Bitmap video"中的帧

html - 在移动设备上查看固定页面布局

使用 Bootstrap 在视网膜显示屏上设置 CSS 断点

html - 如何在 bootstrap 中保持 div 对齐