谷歌地图JS:未捕获的TypeError:无法调用方法' addDomListener'未定义的

时间:2014-03-24 10:58:17

标签: javascript jquery api google-maps dom

我得到" 无法调用方法' addDomListener'未定义的" google.maps.event.addDomListener(window, 'load', initialize);代码行出错,其中event未定义'。我的代码基本上是从developer.google.com上的示例中复制的。

$(function () {
   var officeMap = $("#map-canvas");
   if (officeMap.length > 0) {
      var map;
      function initialize()  {
         var mapOptions = {
            center: new google.maps.LatLng(-34.397, 150.644), zoom: 8 
         };
         map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
      }
      google.maps.event.addDomListener(window, 'load', initialize);
   }
});

谷歌地图脚本(带有API密钥)在文档正文末尾(使用Modernizr)之前加载,如下所示:" https://maps.googleapis.com/maps/api/js?key=myApiKey&sensor=false" (我切换" myApiKey"生成密钥ofc:))

错误是否表明Google地图脚本没有先加载?或者我的API密钥无效? 或其他什么?

2 个答案:

答案 0 :(得分:0)

谷歌代码示例是正确的,但不会在大多数网站上运行,因为有ajax脚本加载涉及。是的,你是对的,你调用函数时没有加载谷歌脚本。

看一下google脚本的来源,它不是完整的javascript sdk,它只是一个代理/启动文件。我记得上次这些示例代码没有问题时就不是这样了。

 <script src="https://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize"></script>
 <script>

function initialize() {
   var officeMap = $("#map-canvas");
   if (officeMap.length > 0) {
      var map;

         var mapOptions = {
            center: new google.maps.LatLng(-34.397, 150.644), zoom: 8 
         };
         map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);

   }
}
 </script>

答案 1 :(得分:0)

尝试使用此代替您的密钥

<script type="text/javascript"      src="https://maps.googleapis.com/maps/api/js?sensor=false">

我的代码

var myCenter=new google.maps.LatLng(-34.397, 150.644);

        function initialize()
        {
        var mapProp = {
          center:myCenter,
          zoom:8,
          mapTypeId:google.maps.MapTypeId.ROADMAP
          };

        var map=new google.maps.Map(document.getElementById('maparea'),mapProp);

        var marker=new google.maps.Marker({
          position:myCenter,
          title:'Hi'
          });

        marker.setMap(map);

        var infowindow = new google.maps.InfoWindow({
          content:'',
          boxStyle: {
                  maxHeight:200
                }
          });

        infowindow.open(map,marker);
        }

        google.maps.event.addDomListener(window, 'load', initialize);