Je sais que cette question a été posée. Mais je ne peux toujours pas aller au-delà. J’essaie simplement de charger l’API googlemaps dans js fiddle. Je ne peux pas dépasser l’erreur: initMap n’est pas une fonction. Mon jsfiddle ici: jsfiddle
Mon code:
function initMap() { var map = new google.maps.Map(document.getElementById('map'), { center: { lat: 34.397, lng: 150.644 }, scrollwheel: false, zoom: 2 });
HTML:
Quand j’ai la fonction initmap () {} (entre parenthèses), la carte ne se charge pas et j’obtiens l’erreur. Lorsque supprimer la function initmap{}
et juste:
var map = new google.maps.Map(document.getElementById('map'), { center: { lat: 34.397, lng: 150.644 }, scrollwheel: false, zoom: 2 });
La carte se charge, mais j’obtiens toujours l’erreur:
initMap n’est pas une fonction
Cela pourrait avoir quelque chose à voir avec un rappel. Je n’ai pas écrit javascript depuis un moment. Mais j’ai juste besoin de dépasser cette erreur. Merci
Dans le violon, vous avez une erreur de syntaxe en ne fermant pas iniMap()
avec }
. En outre, la fonction est définie après le chargement du DOM. Pour résoudre ce problème:
ou
Voici comment traiter ces derniers.
Placez initMap
dans la scope globale. ne placez pas la définition de la fonction dans une scope privée ou anonyme comme
(function(){ function initMap(){ // } })();
Définissez la fonction dans la si possible. ou du moins avant de charger l’API dans
. Et ne définissez jamais
initMap
après le chargement complet du dom, comme window.onload
et document.addEventListener('ondomready', callback)
Bonnes pratiques
Mauvaises pratiques
window.onload
Et
Ou $(function(){ })
si vous utilisez jQuery
Voici un JSFiddle de la façon dont cela fonctionne.
Placez essentiellement votre fonction au-dessus de l’appel à l’ Google API
De plus, la fonction n’était pas correctement fermée.
Vous appelez initMap avant sa déclaration.
https://jsfiddle.net/mp7j7gy0/60/
var initMap = function() { var map = new google.maps.Map(document.getElementById('map'), { center: { lat: 34.397, lng: 150.644 }, scrollwheel: false, zoom: 2 }); } initMap()
Je cherchais une réponse sur de nombreux forums, mais je viens de trouver dans mon code qu’il y avait un ‘;’. Après avoir supprimé le ‘;’ tout a bien fonctionné.
Je sais que ce n’est pas la meilleure réponse, mais j’espère que cela aidera quelqu’un.
Je suis tombé sur ce problème aussi, mais dans mon cas, le coupable semble être mod_pagespeed.
Je pense que cela modifie l’ordre des scripts dans la page, donc les solutions précédentes ne fonctionnaient pas. J’ai réussi à le résoudre en ajoutant dynamicment la balise script
la carte.