【问题标题】:Google Maps doesn't work when inside a div在 div 中时,Google 地图不起作用
【发布时间】:2010-07-08 21:23:16
【问题描述】:

我正在尝试使用 Google Maps API,而包含地图的 div 仅在不在另一个 div 中时才有效。我用两张地图创建了一个小示例代码,第一个有效,第二个无效。如果我删除这段代码的文档类型,两者都可以工作。任何想法为什么?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta content='application/xhtml+xml; charset=UTF-8' http-equiv='content-type' />
    <style type='text/css'>
        html { height: 100% }
        body { height: 100%; margin: 0px; padding: 0px }
        #map_canvas { height: 50% }
        #map_canvas2 { height: 50% }
    </style>
    <title>Map</title>
    <script src='http://maps.google.com/maps/api/js?sensor=false' type='text/javascript'></script>
    <script type='text/javascript'>
        function initialize() {
          var latlng = new google.maps.LatLng(20, 20);
          var myOptions = {
          zoom: 8,
          center: latlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        var map2 = new google.maps.Map(document.getElementById("map_canvas2"), myOptions);
        }
    </script>
  </head>
  <body onload='initialize()'>
    <div id='map_canvas'></div>
    <div>
      <div id='map_canvas2'></div>
    </div>
  </body>
</html>

这是它在 Firefox 和 Chrome 中的样子:


【问题讨论】:

  • @matpol:在那里,我上传了我在 Firefox 和 Chrome 中的看法。
  • 显然,transitional doctype 也可以,所以我会这样做。

标签: javascript api google-maps


【解决方案1】:

它确实有效,如果您在 firebug 中检查页面,您会看到正在创建地图。但是因为你没有将 CSS 定位应用到外层 div,所以谷歌地图创建的地图 div 定位在第一个 map_canvas 下

您需要定位和设置外部 div 的尺寸,尝试给外部 div 一个像素高度和像素宽度...

编辑

而不是:

<div id='map_canvas'></div>
<div>
  <div id='map_canvas2'></div>
</div>

试试:

<!--<div id='map_canvas'></div>-->
<div style="width:900px;height:900px;">
  <div id='map_canvas2'></div>
</div>

您会看到地图正在运行...

【讨论】:

  • 我不这么认为。注释掉第一张地图,您将看到零地图。如果你是正确的,你应该仍然会看到一张地图。
【解决方案2】:

我认为他们坐在彼此之上或其他东西 - 将 css 上的高度更改为像素高度,两个地图都可以工作

【讨论】:

  • 不,他们没有坐在一起。我原来的错误是地图没有显示。我用两张地图创建了这个例子,只是为了显示它什么时候显示,什么时候不显示。如果您注释掉第一张地图,您会看到零地图。
  • 如果用地图 1 注释掉所有要做的事情(即 javascript 调用),并为地图 2 提供以像素为单位的高度,它就可以工作。如果您将两个高度都设置为像素,则两个地图都可以工作。
【解决方案3】:
<body onload='initialize()'>
   <div>
      <div id='map_canvas'></div>
   </div>
</body>

【讨论】:

  • 你试过了吗?它什么也没显示(这是我最初的问题,这只是一个表明 JavaScript 正在工作的示例)。
猜你喜欢
  • 2013-11-18
  • 2016-05-11
  • 2020-04-30
  • 2016-02-01
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多