web-dev-qa-db-fra.com

vous avez inclus l'API Google Maps plusieurs fois sur cette page. Cela peut provoquer des erreurs inattendues

Je reçois deux erreurs en utilisant google map:

  1. Avertissement: vous avez inclus l'API Google Maps plusieurs fois sur cette page. Cela peut provoquer des erreurs inattendues.
  2. a est null (main.js)

je ne sais pas s'il existe un lien entre les deux, mais le résultat final est que ma page ne peut pas charger la carte.

voici ma balise de tête:

<script type="text/javascript" src="../s/Jquery/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="../s/jquery.placeholder.min.js"></script>
<script type="text/javascript" src="../s/index.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.widget.js"></script>

<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.position.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.autocomplete.js"></script>
<script src="../dd/markerclusterer_compiled.js" type="text/javascript"></script><script src="../dd/dealers_js.js" type="text/javascript"></script><script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

voici la fonction que j'appelle la carte google:

function set_google_map(set_region)
{

        var zoom;
        var center;
        switch (set_region) {
            case "usa":
                zoom = 3;
                center = new google.maps.LatLng(37.09, -95.71);
                break;
            case "europe":
                zoom = 3;
                center = new google.maps.LatLng(48.58, 7.71);
                break;
            case "east":
                zoom = 3;
                center = new google.maps.LatLng(31, 121);
                break;
            default:
                zoom = 1;
                center = new google.maps.LatLng(35, 5);
        }
        // Creating the map  
        map = new google.maps.Map(document.getElementById('map'), options);
        google.maps.event.addListener(map, 'click', function(){
            clean_icons();
            if (infowindow) 
                infowindow.close();
        });
        map.setCenter(center);
        map.setZoom(zoom);


            //bounds = new google.maps.LatLngBounds();  
}

ce sont mes variables:

var UseridEncr;
var super_category="ATE";
var infowindow;
var map;
var bounds;
var image="../dd/i/green.png";
var image_active="../dd/i/red.png";
var mc ;
var location_changed=true;
var current_region="usa";
var mcOptions = {gridSize:30, maxZoom: 8};
var last_marker;
var last_marker_z;
var DealersData ;
var markers=[];
var markers_selected=[];
claster_markers=[];
var current_view=0;
myData={};
var selected_items=[];
var total_selected=0;

merci pour votre réponse rapide.

18
dtpozner

J'ai rencontré le même type de problème. Cela se produit si votre page Web, y compris maps api plus d'une fois.

J'ai vérifié dans mon cas qu'il y avait un fichier .js qui appelait également maps api , veuillez donc d'abord vérifier si vous incluez maps api plus d'une fois, si c'est le cas, supprimez le fichier.

15
M. Ahsan

L'un de ces fichiers inclut-il l'API de carte?

<script src="../dd/markerclusterer_compiled.js" type="text/javascript"></script>
<script src="../dd/dealers_js.js" type="text/javascript">
4
david strachan

J'ai eu exactement le même problème, j'ai finalement trouvé le code qui causait le problème dans le fichier functions.php.

// Scripts personnalisés et styles //

wp_enqueue_script( 'wpjobus-google-maps-script', 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false', array( 'jquery' ), '2013-07-18', true );

j'ai ajouté la clé api à ce qui précède. Le code ci-dessous était le résultat final.

// Scripts personnalisés et styles // wp_enqueue_script ('wpjobus-google-maps-script', ' https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key=MY_API_KEY ', array ('jquery') , '2013-07-18', vrai);

J'ai ensuite supprimé le script que j'avais précédemment ajouté à l'en-tête de la page contenant la carte et le tour est joué!

1
Muganwas

Qu'avez-vous défini pour "options"

map = new google.maps.Map(document.getElementById('map'), **options**);

Je ne le vois pas dans la liste des variables.

Recherchez tous les emplacements de (en supposant que vous n’ayez pas fait de copie locale). Je pense que vous l'avez probablement ajouté à dealers_js.js ou à un autre fichier contenant les revendeurs.

Jim

0
Jim Buckley Barret

Pour ceux qui ajoutent un script Google Map à DOM au moment de l'exécution, vous devez supprimer les traces de Google Map avant de rajouter de nouveau la prochaine fois. 

Vous pouvez décharger le script Google Map en suivant les 2 étapes suivantes:

  • Supprimez les scripts Google Map du DOM. 
  • Supprimer Google de la nomenclature (objet window).


Code JS à atteindre:


declare var window;


function removeGoogleMapScript() {
    console.debug('removing google script...');
    let keywords = ['maps.googleapis'];

    //Remove google from BOM (window object)
    window.google = undefined;

    //Remove google map scripts from DOM
    let scripts = document.head.getElementsByTagName("script");
    for (let i = scripts.length - 1; i >= 0; i--) {
        let scriptSource = scripts[i].getAttribute('src');
        if (scriptSource != null) {
            if (keywords.filter(item => scriptSource.includes(item)).length) {
                scripts[i].remove();
                // scripts[i].parentNode.removeChild(scripts[i]);
            }
        }
    }
}


function addGoogleMapScript() {
    removeGoogleMapScript();
    console.debug('adding google script...');
    let dynamicScripts = [`https://maps.googleapis.com/maps/api/js?v=quarterly&key=123yourApiKey`];
    for (let i = 0; i < dynamicScripts.length; i++) {
        let node = document.createElement('script');
        node.src = dynamicScripts[i];
        node.type = 'text/javascript';
        node.async = false;
        node.charset = 'utf-8';
        node.onload = uponFinishLoadingScript; //probably to initialise your map or something
        document.head.appendChild(node);
    }
}

0
Zhu Hang