2011-08-18 66 views
7

我已经搜索了谷歌解决方案,但这似乎是一个新的?我想实现的网站上,但是我不断收到以下错误谷歌地图API:Google地图问题无法调用未定义的方法'apply'?

遗漏的类型错误:无法调用未定义

我的JS的“应用”如下:

 var map; 
     function initialize(location) { 
      var mapDiv = document.getElementById('map-canvas'); 
      var latLng; 
      if (location == 0) { 
       latLng = new google.maps.LatLng(52.066356, 1.102388); 
      } 
      else if (location == 1) { 
       latLng = new google.maps.LatLng(52.672492, 1.232196); 
      } 
      else if (location == 2) { 
       latLng = new google.maps.LatLng(52.207607, 0.123017); 
      } 
      map = new google.maps.Map(mapDiv, { 
       center: latLng, 
       zoom: 14, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }); 

      google.maps.event.addDomListener(map, 'tilesloaded', addMarker(location)); 

     } 

     function addMarker(location) { 
      var latLng; 
      if (location == 0) { 
       latLng = new google.maps.LatLng(52.066703, 1.113573); 
      } 
      else if (location == 1) { 
       latLng = new google.maps.LatLng(52.672492, 1.232196); 
      } 
      else if (location == 2) { 
       latLng = new google.maps.LatLng(52.207607, 0.123017); 
      } 
      var marker = new google.maps.Marker({ 
       position: latLng, 
       map: map 
      }); 
     } 

     $(document).ready(function() { 
      initialize(0); 
     }); 
+0

感谢您的答案的家伙,不能相信我错过了那一个;-) – Apqu

回答

28

在这一行

google.maps.event.addDomListener(map, 'tilesloaded', addMarker(location)); 

你调用该函数addMarker,而不是把它当作一个函数引用。因此,在定义map之前,addMarker正在执行。尝试更改该行:

google.maps.event.addDomListener(map, 'tilesloaded', function() {addMarker(location)}); 
+1

非常有用的提示。在我的情况下,我有同样的错误,关于addListenerOnce(map,'bounds_changed') – user1576978

+1

发生在我身上,并通过使用内联函数来修复。 TKS –

6

问题是你正在调用你应该提供回调函数addMarker。现在,你不是直接调用addMarker它没有返回值你的电话更改为以下

google.maps.event.addDomListener(map, 'tilesloaded', function() { addMarker(location) }); 

。这意味着你有效地传递到undefined API和谷歌图书馆的击球错误尝试调用回调

相关问题