Piszę aplikację, która ładuje Mapy Google asynchronicznie za pomocą ręcznej architektury.
Po załadowaniu map nie załaduje się z jakiegoś powodu z jakiegoś powodu, a otrzymam numer Uncaught TypeError: undefined is not a function
. Sprawdziłem inspektora chrome i odkryłem, że google.maps
jest prawidłowym obiektem, ale nie ma on żadnych własnych właściwości. Ręcznie wywołuje funkcję "initialize" po załadowaniu dokumentu. Co ja robię źle?!Asynchroniczny Google Maps API v3 undefined nie jest funkcją
Odpowiedz
Nie można załadować mapy asynchroniczne-API ze znanego adresu URL (http://maps.googleapis.com/maps/api/js?v=3&sensor=false)
Gdy spojrzeć na skrypt pliku, zobaczysz, że to nie jest to, że API zostanie załadowany, jest to program ładujący ładujący interfejs API. Program ładujący korzysta z document.write()
, co prowadzi do nieoczekiwanych wyników po wywołaniu po załadowaniu dokumentu.
Ponadto zdarzenie onload dokumentu nie czeka na załadowane obiekty asynchroniczne, może być zbyt szybkie.
Nie można również użyć zdarzenia load skryptu do wywołania funkcji initialize, ponieważ po uruchomieniu ładuje się program ładujący, a nie map-API.
Co zrobić:
dołączyć oddzwonienia parametr do skryptu URL (wraz z nazwą initialize-funkcji jako wartości)
http://maps.googleapis.com/maps/api/js?v=3&sensor=false&callback=initialize
Teraz masz inną ładowarkę, która :
- nie używa
document.write()
- wywołuje callback-functi na (zainicjować) gdy mapy-API został załadowany
Demo: http://jsfiddle.net/doktormolle/7cu2F/
Podobne do komentarza: wydaje się zwrotna musi być funkcją przymocowane bezpośrednio do okna. nie fajne google :)
Istnieje inna opcja, the google-API-loader, która obsługuje korzystanie z odwołań funkcji (zamiast nazw funkcji).
Próbka, która ładuje map-API asynchronicznie, ale tylko wtedy, gdy istnieje element z identyfikatorem map-canvas
w dokumencie, a następnie tworzy mapę:
window.addEventListener('load',function(){
if(document.getElementById('map-canvas')){
google.load("maps", "3",{
callback:function(){
new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(0,0),
zoom: 3
});
}
});
}
},false);
body,html,#map-canvas{
height:100%;
margin:0;
padding:0;
width:100%;
}
<script src="https://www.google.com/jsapi?.js"></script>
<div id="map-canvas"></div>
OK dzięki za inf o. Nie chciałem używać 'callback = initialize' ponieważ chciałem przekazać kilka dodatkowych argumentów w funkcji initialize, ale myślę, że będę musiał obejść to. – Stephen
To jest dokładnie to, czego szukałem – Stephen
wydaje się, że 'callback' musi być funkcją dołączoną bezpośrednio do okna. nie fajne google :) – apneadiving
- 1. Google Maps Api v3 - getBounds jest niezdefiniowany
- 2. Google Maps API: TypeError: a jest undefined
- 3. Google Map API V3- MarkerClusterer undefined
- 4. Google maps api v3 DrawingManager żadna praca
- 5. Google Maps API v3 - GIcon nie jest zdefiniowany
- 6. Google Maps v3 OverlayView.getProjection()
- 7. Google Maps API - Geometria Kodowanie - TypeError: a.lat nie jest funkcją
- 8. google maps api v3 bez płynnego przeciągania
- 9. Google Maps API V3 wyłącz płynne powiększanie
- 10. MVC 4 i Google Maps API v3
- 11. Google Maps api v3 tools: zniekształcenia wizualne?
- 12. Usuwanie znacznika w Google Maps API v3
- 13. Google Maps API v3 Wydanie Firefoksa
- 14. Google Maps MarkerLabel nie jest funkcją
- 15. Dojazd odległość w Google Maps API v3
- 16. Znacznik Google Maps API v3 z etykietą
- 17. Google Maps API V3 Szary obszar
- 18. Google maps API V3 method fitBounds()
- 19. Google Maps API v3: Menedżer rysunków
- 20. Google Maps API v3: Markery nie są usuwane
- 21. Google maps API V3 - Nie można geokodować podpowiedzi autocompleteService
- 22. Google Maps v3 API mouseover z wielokątów. Nie działa
- 23. Google Maps Api v3 niestandardowe InfoWindow - błąd "google is defined"
- 24. Google Maps v3 - Markery nie wyświetlają się
- 25. InvalidValueError: initAutocomplete nie jest funkcją API Miejsc Google i autouzupełniania
- 26. Google Maps API: markerwithlabel.js - Uncaught ReferenceError: google nie jest zdefiniowany
- 27. Google Maps API - mapa nie jest załadowana
- 28. Google Maps v3 Direction Icons
- 29. Błędy Google Maps API V3 po uaktualnieniu wtyczki WP
- 30. TypeError: undefined nie jest funkcją w nodejs
Być może niektóre kodu (twoja "ręcznie zbudowana struktura byłaby początkiem)? Link do strony, która pokazuje problem?" jsfiddle, który robi? – geocodezip
Czytanie dokumentacji to dobry początek [** Zobacz **] (https: // developerów. google.com/maps/documentation/javascript/tutorial#asynch) –