Google Maps Uncaught TypeError: b.has не является функцией - PullRequest
0 голосов
/ 28 ноября 2018

Мы включили API Карт Google V3 в наши внутренние системы со следующим кодом:

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

Это работало всего несколько часов назад (9:00 по восточному стандартному времени)) теперь в консоли все, что возвращается:

Uncaught TypeError: b.has не является функцией из https://maps.googleapis.com/maps-api-v3/api/js/35/3/map.js

Кто-нибудь еще сталкивался с такой же проблемой?

Как это исправить, если код включен с серверов Google?

Ответы [ 4 ]

0 голосов
/ 04 февраля 2019

Та же проблема, но с другой ошибкой, которая внезапно появилась:

map.js: 56 Uncaught TypeError: this.j.keys не является функцией

Нетпроблемы при установке версии на 3.34, но 3.35 не будет загружать карту или маркеры.

После нескольких часов попыток выяснить проблему, переименование класса js, чтобы он больше не назывался Map, исправило его,

0 голосов
/ 29 ноября 2018

Похожая вещь.Статический зрелый код в приложении с высоким трафиком.Работаю 8+ лет.До сегодняшнего утраОказалось, что мы использовали зарезервированный идентификатор, заявленный API GMap для одного из наших внутренних экземпляров объекта («Карта»).Понятия не имею, почему решил, что сегодня был день, чтобы взорвать.Мы ссылались на более старую версию (3.29) API.Что-то явно изменилось в конце Google.

0 голосов
/ 29 ноября 2018

У нас здесь такая же проблема.У нас была ссылка на последнюю версию: https://maps.googleapis.com/maps/api/js?key=...

Если мы принудительно установим версию на 3.34, то получится: https://maps.googleapis.com/maps/api/js?v=3.34&key=

Версия 3.35 не работает.Google заменил функцию, используемую картами (хэш-карты, а не графические карты), которая используется для поиска ключа.hasOwnProperty (b, c) -> b.has (c)

Проблема в том, что у "b" нет функции "has".

У меня не так много информации наэта точка.Мы продолжаем расследование.

Удачи всем.

С уважением, Винсент

Правка: Хорошо, теперь я понимаю, что случилось.Где-то на нашей карте мы переопределяем прототип «Карта».Этот прототип не содержит метод «имеет» и, возможно, «установить» (это было так для нас).Вы должны искать что-то вроде «Map.prototype».в журнале JS файлы.Это даст вам подсказку, где вы должны исправить свой JS.Если вы не можете подавить этот прототип, вам придется переопределить отсутствующие методы.Например, у нас был следующий прототип:

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

Нам пришлось дополнить этот прототип следующими методами:

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;
}

С этим исправлением работает версия 3.35 GoogleMaps JS.

Надеюсь, это поможет.

С уважением, Винсент

0 голосов
/ 28 ноября 2018

Если бы та же самая проблема была исправлена ​​с помощью более старой версии:

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

Исправлено долгое время - Вы, вероятно, перезаписали собственное окно. Карта, см. https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Map

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...