如果在异步加载 gmap 时未指定回调,则不会加载其他必要的谷歌地图脚本

Posted

技术标签:

【中文标题】如果在异步加载 gmap 时未指定回调,则不会加载其他必要的谷歌地图脚本【英文标题】:If no callback is specified when asynchronously loading gmaps the other necessary google map scripts aren't loaded 【发布时间】:2012-03-10 11:10:25 【问题描述】:

这是否记录在某处我需要指定回调才能定义 google.maps 模块?或者这是一个错误。

以下代码不加载谷歌地图模块:

<!DOCTYPE html>
<html>
  <head>
    <title>
      Google Maps javascript API v3 Example: Asynchronous Map Simple
    </title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="UTF-8">
    <style type="text/css">
      html  height: 100% 
      body  height: 100%; margin: 0; padding: 0 
      #map_canvas  height: 100% 
    </style>
    <script type="text/javascript">
      function initialize() 
        var myOptions = 
          zoom: 8,
          center: new google.maps.LatLng(-34.397, 150.644),
          mapTypeId: google.maps.MapTypeId.ROADMAP
        ;

        var map = new google.maps.Map(document.getElementById('map_canvas'),
            myOptions);
      

      function loadScript() 
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = 'http://maps.googleapis.com/maps/api/js?v=3.6&key=myKey&sensor=false'   //adding  'callback=something' gets the maps module to load
        document.body.appendChild(script);
      

      window.onload = loadScript;
    </script>
  </head>
  <body>
    <div id="map_canvas"></div>
  </body>
</html>

编辑——对答案的回应

为此,您可以注入自己的标签以响应 window.onload 事件或函数调用,但您需要另外 指示 Maps JavaScript API 引导程序延迟执行您的 应用程序代码,直到 Maps JavaScript API 代码完全加载。 您可以使用作为参数的回调参数来执行此操作 完成 API 加载后要执行的函数。

这意味着没有回调将不会加载任何 api?它说如果代码完全加载,您可以使用回调参数执行函数,但它并没有说如果没有回调参数,代码将永远不会加载。

【问题讨论】:

【参考方案1】:

在此处记录:http://code.google.com/apis/maps/documentation/javascript/tutorial.html#asynch

【讨论】:

措辞可能有点奇怪,但对我来说似乎很清楚您必须指定回调参数。这是异步加载脚本的一种非常常见的模式。 好吧,如果他们说必须而不是可能,我不会发布这个问题。他们强制执行传感器参数并提醒开发人员,如果未指定一个参数,那么使用另一个“必需”参数具有相同的功能会很好。这对我来说听起来像是一个错误。 所需的传感器参数对我来说很愚蠢。这里的区别在于它是用于通过页面中的普通脚本标签异步或同步加载 API 的相同 URL。同步方法不需要回调,但异步方法需要,所以不能强制执行。 您的链接不再有效。

以上是关于如果在异步加载 gmap 时未指定回调,则不会加载其他必要的谷歌地图脚本的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 的回调模式

复选框设置日期,但在表单加载时未选中:需要加载事件吗?

如何在页面加载后启动 Bootstrap 切换按钮,如果打开则不调用回调

使用回调异步加载列表视图中的图像

Gmaps API - 许多带有图标和标签的标记在移动设备上加载缓慢

异步脚本加载回调