谷歌地图除非包含div在体内,否则不会起作用

时间:2014-03-31 14:53:39

标签: javascript html google-maps

我在尝试学习Google地图时遇到了一个奇怪的问题。

当我遵循Google Maps的教程时,一切都很有效。

然而,当我尝试将地图放在不是主体div的div中时,事情就会出错。例如,而不是

<body>
    <div id="map-canvas"></div>
</body>

我正在尝试这个

<body>
    <div id="mycontainer">
        <div id="map-canvas"></div>
    </div>
</body>

现在它停止工作了! 它没有意义,因为Javascript使用了getElementById()函数,因此id的确切位置不应该对吗?

Live Demo

守则

<!DOCTYPE html>
<html>
  <head>
    <title>Asynchronous Loading</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 99%;
        margin: 60px;
        padding: 0px
      }
    </style>
    <script>
function initialize() {
  var mapOptions = {
    zoom: 8,
    center: new google.maps.LatLng(-34.397, 150.644)
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);
}

function loadScript() {
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&' +
      'callback=initialize';
  document.body.appendChild(script);
}

window.onload = loadScript;

    </script>
  </head>
  <body>
    <div id="myContainer">
        <div id="map-canvas"></div>
    </div>
  </body>
</html>

1 个答案:

答案 0 :(得分:3)

你需要高度和高度宽度使地图显示。 body<div id="mycontainer"><div id="map-canvas">需要有高度和高度宽度设置为固定编号而不是百分比。 Read similar question

你的小提琴http://jsfiddle.net/6JR39/1/