Google Maps не работает, когда внутри div - PullRequest
8 голосов
/ 07 июля 2010

Я пытаюсь использовать API Карт Google, и div, который будет содержать карту, работает, только когда не находится внутри другого div. Я создал небольшой пример кода с двумя картами, первая работает, вторая - нет. Если я удаляю doctype этого куска кода, оба работают. Есть идеи почему?

<!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:

alt text

alt text


Ответы [ 3 ]

5 голосов
/ 07 июля 2010

Это работает, если вы осмотрите страницу в firebug, вы увидите, что карта создается. Но поскольку у вас нет CSS-позиционирования, примененного к внешнему div, div карты, созданный Google maps, расположен под первым map_canvas

Вам нужно расположить и установить размеры для внешнего div, попробуйте дать внешнему div высоту пикселя и ширину пикселя ...

EDIT

вместо:

<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>

Вы увидите, что карта работает ...

0 голосов
/ 07 июля 2010
<body onload='initialize()'>
   <div>
      <div id='map_canvas'></div>
   </div>
</body>
0 голосов
/ 07 июля 2010

Я думаю, что они сидят друг над другом или что-то в этом роде - измените высоту на css на высоту в пикселях, и обе карты будут работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...