Карты Google V3 не загружаются (вопросы и ответы) - PullRequest
0 голосов
/ 29 марта 2012

На этот вопрос уже дан ответ.Я обнаружил, в чем проблема.Но я публикую здесь вопросы и ответы, потому что другие могут быть в том же затруднительном положении.

Мой код карты Google взят из примеров, которые я нашел в Интернете.

В "плохом" коде естьбыла строка, которая выглядела так:

var latlng= new google.maps.LatLng(results[0].geometry.location.Ua, results[0].geometry.location.Va);

Этот код работал до прошлой ночи.Используя firebug для проверки объектов, оказывается, что местоположение теперь имеет вид: {Ta: число, Ua: число}

Моим непосредственным решением было использование методов lat () и lng () всякий раз, когда ятребуется широта и / или lng.

Другим исправлением было создание более умного экземпляра моей карты.

Да, это было глупо полагаться на свойства, раскрытые глубоко в объекте с помощью firebugинспектор.Да, будучи новичком в Google Maps и полагаясь на копировальную пасту практически без знаний, она принесла свои плоды.

Но быстрый поиск в Google нашел много людей (кроме "образца", который я позаимствовал)используя свойство .Va напрямую.

Отсюда и сообщение на случай, если это тоже их проблема.

1 Ответ

2 голосов
/ 29 марта 2012

Если вам интересно , почему это произошло, то все просто: в примере использовались недокументированные внутренние компоненты API, поэтому, когда Google обновил файл Maps JS, он сломался.

Более конкретно, Ua и Va были автоматически сгенерированными именами переменных, полученными в результате минификации .Похоже, что Google удалил переменную из исходного источника, и метки сместились вверх (Ua, VaTa, Ua).

Держу пари, я точно знаю, как авториз плохого образца придумал свой код.Он проверил LatLng (тип объекта в location в вашем примере) в инструментах разработчика своего браузера, увидел, что эти две переменные со странными именами содержат данные, которые он хотел, и просто пошел с ними,Так как методы lat и lng «скрыты» в LatLng prototype, он их не заметил.

Здесь есть два урока:

  1. Всегда использовать документированные методы API ;все остальное - это деталь реализации, которая может быть изменена.
  2. Не верьте, что код на сайте какого-то чувака - это хороший или даже компетентный пример того, как что-то делать.Это особенно верно в случае Google Maps, где есть обширная документация и официальные примеры.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...