web-dev-qa-db-fra.com

Google Maps Uncaught TypeError: b.has n'est pas une fonction

Nous incluons l'API Google Maps V3 dans nos systèmes internes avec le code ci-dessous:

script src = "https://maps.googleapis.com/maps/api/js?key=&libraries=places,geometry" 

Cela fonctionnait jusqu'à il y a quelques heures (9h du matin) dans la console tout ce qui est retourné est:

Uncaught TypeError: b.has n'est pas une fonction de https://maps.googleapis.com/maps-api-v3/api/js/35/3/map.js

Est-ce que quelqu'un d'autre fait face au même problème?

Comment puis-je résoudre ce problème lorsque le code est inclus à partir des serveurs de Google?

5
JRT2018

Avait le même problème, en utilisant une ancienne version a résolu pour le moment:

https://maps.googleapis.com/maps/api/js?v=quarterly&key=API_KEY

Correction longue durée - Vous avez probablement remplacé la window.Map native, voir https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Map

7
Krisdigital

Nous avons le même problème ici. Nous avions un lien vers la dernière version: https://maps.googleapis.com/maps/api/js?key= ...

Si nous forçons la version à 3.34, le problème est résolu: https://maps.googleapis.com/maps/api/js?v=3.34&key=

La version 3.35 ne fonctionne pas. Google a remplacé une fonction utilisée avec des cartes (hashmaps, et non des cartes graphiques) permettant de rechercher une clé . HasOwnProperty (b, c) -> b.has (c)

Le problème est que "b" n'a pas la fonction "a".

Je n'ai pas beaucoup plus d'informations à ce stade. Nous poursuivons l'enquête.

Bonne chance à tous.

Cordialement Vincent

Edit: .__ OK, maintenant je comprends ce qui s’est passé. Quelque part dans notre carte, nous redéfinissons le prototype "Carte". Ce prototype ne contient pas non plus la méthode "has" et peut-être "set" (c'était le cas pour nous) . Vous devez rechercher quelque chose comme "Map.prototype". dans les fichiers jour JS. Cela vous indiquera où vous devez corriger votre JS . Si vous ne pouvez pas supprimer ce prototype, vous devrez redéfinir les méthodes manquantes . Par exemple, nous avons eu le prototype suivant:

function Map(){
    this.obj = {};
    this.count = 0;
}

Nous avons dû compléter ce prototype avec les méthodes suivantes:

Map.prototype.has=function(key){
    return this.obj[key] !== undefined;
}

Map.prototype.set = function(key, value){
    var oldValue = this.obj[key];
    if(oldValue == undefined){
        this.count++;
    }
    this.obj[key] = value;
    return oldValue;
}

Avec cette correction, la version 3.35 de GoogleMaps JS fonctionne.

J'espère que ça aide.

Cordialement, Vincent

3
Vincent Coulon

Chose similaire. Code mature statique dans l'application à fort trafic. Travailler depuis plus de 8 ans. Jusqu'à ce matin. En fin de compte, nous utilisions un ID réservé revendiqué par l'API GMap pour l'une de nos instances d'objet internes ("Map"). Je ne sais pas pourquoi il a décidé aujourd'hui de souffler. Nous étions en liaison dans l'ancienne version (3.29) de l'API. Quelque chose a clairement changé du côté de Google.