2011-08-18 12 views
7

私はGoogleのすべてのソリューションを検索しましたが、これは新しいものと思われますか?Googleマップの問題未定義のメソッド 'apply'を呼び出せませんか?

 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

おかげで、私はその1つの;-) – Apqu

答えて

28

を起動しようとするとエラーに当たっている意味します関数参照。したがって、マップが定義される前にaddMarkerが実行されています。その行を変更してみてください:答えの男性のための

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

非常に便利なヒントを逃した信じることができません。私の場合、addListenerOnce(map、 'bounds_changed')に関しても同じエラーが発生しました – user1576978

+1

インライン関数を使用して私にも起こりました。 TKS –

6
:未定義

次のように私のJSがあるの「適用」メソッドを呼び出すことはできません:

捕捉されない例外TypeErrorを:私は、私は次のエラーを取得することは保つがサイト上でGoogle MapsのAPIを実装しようとしています

問題は、コールバックを提供する関数addMarkerを呼び出すことです。今あなたの代わりに直接値を返さないaddMarkerを起動している以下の

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

にお電話を変更します。これは、あなたが効果的にAPIにundefinedを渡していると、Googleのライブラリはあなたが関数addMarkerを呼び出す代わりのようにそれを渡している

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

この行では、あなたのコールバック