0

我对使用其 HTML 导入到 Boilerplate 3 的 Google 地图进行了相当简单的改编。我需要激活密钥吗?(如果我这样做了,我希望得到某种形式的信息更丰富的错误消息。)我的代码出现空白屏幕;代码是:

<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title></title>
  <meta name="description" content="">

  <meta name="viewport" content="width=device-width">
  <link rel="stylesheet" href="css/style.css">

  <script src="js/libs/modernizr-2.5.3.min.js"></script>
  <style type="text/css">
    html { height: 100% }
    body { height: 100%; margin: 0; padding: 0 }
    #map_canvas { height: 100%, width: 100% }
  </style>
</head>
<body>
  <!--[if lt IE 7]><p class=chromeframe>Your browser is <em>ancient!</em> <a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p><![endif]-->
  <header>

  </header>
  <div role="main">

    <div id="map_canvas">
    </div>

  </div>
  <footer>

  </footer>


  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.1.min.js"><\/script>')</script>

  <script src="js/plugins.js"></script>
  <script src="js/script.js"></script>

<script>


function initialize()
    {
    var myoptions = {
        zoom: 4,
        center: new google.maps.LatLng(42.881944, -87.627778),
        mapTypeId: google.maps.MapTypeId.ROADMAP
        };
    var map = new google.maps.Map(jQuery('#map_canvas')[0],
    myoptions);


    }

function load_script()
    {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.google.com/maps/api/js?key=AIzaSyAi288X8h9Y4fXM21Q0-my6O6kiLaDeC7M&sensor=false&callback=initialize";
    document.body.appendChild(script);
    }

jQuery(function()
    {
    initialize();
    load_script();
    });
</script>
</body>
</html>
4

1 回答 1

2

我不知道 Boilerplate 做了什么,所以我对发布的源代码做了尽可能少的更改:

(1) 在#map_canvas 样式中,后面的逗号改为分号height: 100%

(2)divrole="main"也需要height: 100%,所以我给了它一个idwrapper并添加了一个合适的样式

(3) jQuery include 应该http:在 URL 前面有

(4)initialize最终jQuery函数调用内部的调用是不必要的,因为脚本包含在load_scripthas 中callback=initialize。无论如何,在包含地图 JS 之前调用地图代码是行不通的。

<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title></title>
  <meta name="description" content="">

  <meta name="viewport" content="width=device-width">
  <link rel="stylesheet" href="css/style.css">

  <script src="js/libs/modernizr-2.5.3.min.js"></script>
  <style type="text/css">
    html { height: 100% }
    body { height: 100%; margin: 0; padding: 0 }
    #wrapper { height: 100%; width: 100% }
    #map_canvas { height: 100%; width: 100% }
  </style>
</head>
<body>
  <!--[if lt IE 7]><p class=chromeframe>Your browser is <em>ancient!</em> <a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p><![endif]-->
  <header>

  </header>
  <div role="main" id="wrapper">

    <div id="map_canvas">
    </div>

  </div>
  <footer>

  </footer>


  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.1.min.js"><\/script>')</script>

  <script src="js/plugins.js"></script>
  <script src="js/script.js"></script>

<script>


function initialize()
    {
    var myoptions = {
        zoom: 4,
        center: new google.maps.LatLng(42.881944, -87.627778),
        mapTypeId: google.maps.MapTypeId.ROADMAP
        };
    var map = new google.maps.Map(jQuery('#map_canvas')[0],
    myoptions);


    }

function load_script()
    {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.google.com/maps/api/js?key=AIzaSyAi288X8h9Y4fXM21Q0-my6O6kiLaDeC7M&sensor=false&callback=initialize";
    document.body.appendChild(script);
    }

jQuery(function()
    {
    load_script();
    });
</script>
</body>
</html>
于 2012-06-27T17:56:09.243 回答