javascript - Google Maps API 不在 DIV 标记内呈现

标签 javascript css google-maps

我有一个使用 Google Maps API v3 的非常简单的 Google map ,它不会在 div 标签之间呈现。

CSS:

#mainContent {
background:#c8dbec url(//images.rigzone.com/images/background_body4.gif) 50% top repeat-y;
/*e0ecff c1daf0 e3ecf3*/
position: relative;
text-align: left;
}
* {
text-align: left;
 }
#content {
width: 935px;
margin:auto;
position: relative;
padding-left:0px;
padding-top:7px;
padding-bottom:10px;
font-family: Arial, Helvetica, sans-serif;
text-align: left;
}

#mainBody {
float:right;
width:770px;
padding:0px 5px 0px 5px;
}

html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100%; width:400px; }

HTML/JS:

<div id="mainContent">  
<div id="content">  
    <div id="mainBody">

        <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key=myKeyID&libraries=weather">
        </script>
        <script type="text/javascript">
          var map
          function initialize() {
             var mapOptions = {
               center: new google.maps.LatLng(28.39404819, -91.38743867),
               zoom: 7,
               mapTypeId: google.maps.MapTypeId.HYBRID
             };
             map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);   
          }
        </script>                

        <div id="map_canvas" style="width:600px; height:50%"></div>

        <script>initialize();</script>    
    </div>
</div>

如果我删除 map 周围的 div 标签,它可以正常工作,但我没有所需的格式。删除 div 也不是一个选项,因为它们是硬编码在我们的页眉和页脚文件中的。任何帮助表示赞赏。

最佳答案

block 元素(如 div)的工作方式是它占据其父元素的整个宽度,以及其相关子元素的最小高度。如果 block 元素的子元素将其高度设置为 100%,这几乎就像循环引用,但此行为将其设置为 0,除非它附加了硬数字。

要解决这个问题,您需要将其嵌套路径中所有 div 的高度设置为其父级的高度,以实现您想要完成的目标。如果您在浏览器的开发人员工具中使用 Inspect Element,您就会明白这意味着什么。

我创建了一个 JSFiddle 你可以玩,包括你的设置。此外,要初始化,您应该使用 google.maps.event.addDomListener 调用您的 initialize 函数,而不是直接调用它,因为您的浏览器将尝试异步加载脚本并且当它到达调用函数 initialize(); 时,API 可能还没有准备好。

关于javascript - Google Maps API 不在 DIV 标记内呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22820999/

相关文章:

javascript - 下拉列表更改时更改表内容

javascript - 如何在 HTML5 中为 'option' 的禁用和选定的 'select' 设置样式

jquery - 上下滑动面板

用于谷歌地图的 Angular 2 agm 库按地点 id 设置地点

javascript - 如何控制谷歌地图标记的不透明度

javascript - 使用 Canvas 的简单 html 5 javascript 动画的超时函数

javascript - 如何使用javascript打印图像

javascript - "Hide"YouTube 视频的加载屏幕

css - 使用 Flexbox 解决 Internet Explorer 表格呈现小宽度的错误

google-maps - 我可以将用户限制在 Google map 上的特定范围和缩放级别吗?