2011-08-18 18 views
7

Bir çözüm için tüm google'da arama yaptım, ancak bu yeni bir şey mi görünüyor?Google Maps Sorunu tanımsız olarak 'yöntem' çağrısı yapılamıyor mu?

Yakalanmayan TypeError: Ben aşağıdaki hatayı almaya devam ancak sitede google haritalar API uygulamak çalışıyorum şu şekilde yöntemini arayamaz tanımsız

Benim JS 'uygulamak' is:

 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

Cevaplar için teşekkürler çocuklar, bu bir özledim inanamıyorum ;-) – Apqu

cevap

28

çağırmak girişiminde hata isabet demektir Bir işlev referansı. Bu nedenle, mapMarker haritanın tanımlanmasından önce yürütülmektedir. Bu satırı değiştirmeyi deneyin:

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

Çok kullanışlı ipucu. Benim durumumda, aynı hata, bir addListenerOnce (harita, 'bounds_changed') – user1576978

+1

benim için de yanı sıra satır içi işlevini kullanarak düzeltildi. tks –

6

Sorun, bir geri bildirimde bulunmanız gereken addMarker işlevini çağırıyor olmanızdır. Şu anda yerine doğrudan hiçbir değeri döndürür addMarker yürütmesini ediyoruz aşağıdaki

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

için çağrı değiştirin. Bu etkili API undefined geçiyoruz ve google kütüphane Sen fonksiyon addMarker aramak yerine olarak geçiyoruz

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

Bu satırda senin geri arama