我尝试将显示Map(<div id="map-canvas"></div>
)的div
标记放在另一个div
中,但它并没有以这种方式显示Map。这是CSS还是JavaScript的问题?还是API的工作方式?
下面是我使用嵌套div
的代码:
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map-canvas {
margin: 0;
padding: 0;
height: 100%;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false">
</script>
<script>
var map;
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div> <!-- ommiting this div will show the map -->
<div id="map-canvas"></div>
</div>
</body>
</html>
8条答案
按热度按时间qf9go6mv1#
问题在于百分比大小。您没有定义父div(新div)的大小,因此浏览器无法向Google Maps API报告大小。为 Package 器div指定特定大小,或者如果其父div的大小可以确定,则为百分比大小。
参见this explanation from Mike Williams' Google Maps API v2 tutorial:
如果你尝试使用style=“width:100%;height:100%”,你会得到一个高度为零的Mapdiv。这是因为div试图是
<body>
大小的一个百分比,但默认情况下<body>
的高度是不确定的。有很多方法可以确定屏幕的高度,并使用该像素数作为Mapdiv的高度,但一个简单的替代方法是更改
<body>
,使其高度为页面的100%。我们可以通过对<body>
和<html>
应用style=“height:100%”来实现这一点。(我们必须对两者都这样做,否则<body>
将尝试为文档高度的100%,并且默认高度是不确定的。)在你的css中添加100%大小到html和body
将其内联添加到任何没有id的div中:
p8h8hvxi2#
将
style="width:100%; height:100%;"
添加到div中,看看会发生什么不是
#map_canvas
,而是主div范例
这里有一些其他的答案来解释为什么这是必要的
sulc1iza3#
我解决了这个问题:
js81xvg64#
给予div的初始高度,并在样式中指定高度的百分比;
ruarlubt5#
在我的例子中,我得到的是灰色背景,结果是在Map选项中包含了缩放值。是的,没有意义。
rjee0c156#
巫师
你有没有试过设置额外的div的高度和宽度,我知道在一个我正在做的项目中,除非我已经设置了高度和宽度,否则JS不会在div中放置任何东西。
我用你的代码和硬编码的高度和宽度,它显示了我,没有它不显示。
我建议要么硬编码,要么给div分配一个ID,然后将其添加到CSS文件中。
uajslkp67#
我只是想添加对我有用的东西,我为两个div都添加了高度和宽度,并使用bootstrap使其具有响应性
为了使
col-lg-1
工作,添加位于Here的 Bootstrap 引用dffbzjpn8#
要知道,这个问题已经解决了,但上面提供的解决方案可能并不适用于所有情况。
对我来说,