8
votes

Chargement dynamique de Google Maps API's

im essayant de charger de manière dynamique de l'API de Google Maps. J'utilise le code suivant: xxx

mais en essayant de créer la carte xxx

ou xxx

Je reçois une erreur que Google (ou GMAP2) est indéfinie.


2 commentaires

Bonjour Chris, j'avais exactement le même problème, avez-vous une solution?


Vous avez trouvé une réponse qui convient à vos besoins?


4 Réponses :


5
votes

Assurez-vous que vous n'existant pas la carte avant que le JavaScript ait fini de charger.

Également, si vous souhaitez utiliser le chargeur AJAX API, vous devez le faire comme ceci: P>

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=abcdefg&sensor=true_or_false" type="text/javascript"></script>


0 commentaires

3
votes

Je l'ai fait comme si ... Cet exemple utilise JQuery et Google Map V3.x

$.getScript("http://maps.google.com/maps/api/js?sensor=true&region=nz&async=2&callback=MapApiLoaded", function () {});

function MapApiLoaded() {
    //.... put your map setup code here: new google.maps.Map(...) etc
}


0 commentaires

9
votes

Vous pouvez le faire. Vous pouvez ajouter un nom de fonction de rappel dans l'URL. Il sera appelé lorsque l'API est chargée. Cette fonction de rappel doit être accessible dans la portée du document.

Je l'ai fait cela il y a quelque temps en déclenchant un événement personnalisé sur la fenêtre avec JQuery: http://jsfiddle.net/fzqqw/5/ p>

utilisé " http://maps.google.com/maps/api/js?sensor=false&callback=gmapscallback " p>

window.gMapsCallback = function(){
    $(window).trigger('gMapsLoaded');
}

$(document).ready((function(){
    function initialize(){
        var mapOptions = {
            zoom: 8,
            center: new google.maps.LatLng(-34.397, 150.644),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions);
    }
    function loadGoogleMaps(){
        var script_tag = document.createElement('script');
        script_tag.setAttribute("type","text/javascript");
        script_tag.setAttribute("src","http://maps.google.com/maps/api/js?sensor=false&callback=gMapsCallback");
        (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
    }
    $(window).bind('gMapsLoaded', initialize);
    loadGoogleMaps();
})());​


2 commentaires

Quand je fais cela, je reçois cette erreur "Rejet de la promesse non gérée: TypeError: NULL n'est pas un objet (évaluer" a.firstchild ') "


@Alex Stewart Voir cette réponse Stackoverflow.com/a/12602845/1491212



2
votes

Cela fonctionne pour moi:

    const myApiKey = `12345`;
    const lat = -34.397;
    const lng = 150.644;
    const zoom = 8;

    const parentElement = document.getElementById(`map`); // a <div>
    const script = document.createElement(`script`);
    script.src = `https://maps.googleapis.com/maps/api/js?key=${myApiKey}`;
    script.async = true;
    script.defer = true;
    script.onload = function () {
        new google.maps.Map(parentElement, {
            center: {lat, lng},
            zoom
        });
    };
    parentElement.insertBefore(script, null);


1 commentaires

Lequel d'entre eux dois-je utiliser si je veux que la carte affiche sur le bouton Cliquez?