* ПРИМЕЧАНИЕ. - Этот код принадлежит стороннему расширению.Я не участвовал в его создании, и несколько лет назад при его использовании это было единственное расширение, доступное в то время.Поэтому, хотя я ценю ваше мнение, я надеюсь, что все комментарии могут быть только для предложений по решению.Спасибо!
У нас на многих сайтах запущен компонент Google Maps для CMS, который позволяет клиентам добавлять маркеры и контуры (полигоны) в свои Карты Google.
Это работает годами.Отметим, что он использует Google Maps JS API 2, который был прекращен, а не API 3. Однако Google отметил, что API 2 все еще будет хорошо работать в 2013 году, так что это не проблема.Однако они, должно быть, что-то изменили, потому что на днях на всех наших сайтах, хотя на Картах появляются маркеры, а на полигонах нет.Они находятся на разных серверах.
Раньше не было ошибок, но теперь в Chrome написано:
"Uncaught SyntaxError: Unexpected token)" для строки 1669 в файле JS.Вы можете увидеть файл в следующей Gist:
https://gist.github.com/2238148
Как вы можете видеть, здесь нет пропущенного ")", и код почти года работал без изменений на почти 100 сайтах, поэтомупредположим, что что-то в конце Google, должно быть, изменилось.Но есть ли что-то, что мы можем приспособить к этому коду, чтобы помочь противостоять изменениям?-Обновление 25 марта, когда все это сломалось, Google сделал обновление своего API Карт Google 2.
Поиск в Интернете, и вот пример сайта, использующего тот же компонент с той же ошибкой: http://goo.gl/GMgOs
Эта проблема, кажется, близка к следующему:
// extract current digraph from overlay function
var digraph = GMap.addOverlay.toString().replace(/\s/g,'').replace(/.push\([^{]+\);a.initialize\([^{]+\);a.redraw\([^{]+\).+$/,'').replace(/^.+\./,'');
// add multiple overlays at once (api hack to improve loading speed)
GMap2.prototype.addOverlays = function(a) {
var b = eval('this.' + digraph);
var i = a.length;
while (i--) {
b.push(a[i]);
a[i].initialize(this);
a[i].redraw(true);
}
}
Если этот код нужно изменить, может ли кто-нибудь опубликовать модифицированную версию в Gist или Pastie?
Другое обновление - этот кодв вышеупомянутом выше я прокомментировал, так как это, предположительно, не было необходимости, был взломать, чтобы ускорить вещи.Тем не менее получает ошибку, однако отмечается в комментариях.Однако я заметил здесь: https://developers.google.com/maps/documentation/javascript/v2/reference#GMap2.Methods.Overlays, что он вызывает код «addOverlay», а не «addOverlays», поэтому задаюсь вопросом, может быть, s был снят в последнем обновлении API Google.Удаление s во всех трех местах просто выдает новую ошибку, которая повторяет [объект] много раз.