2015-01-26 2 views
2

Автозаполнение объектов Google Maps не работает должным образом.Геометки в Google Картах Автозаполнение отсутствующей геометрии

https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete

При вставке строки поиска в карте (например, «ЗКМ»), это даст некоторые рекомендации в раскрывающемся списке. В этом случае это будут «ZKM | Zentrum für Kunst und Medientechnologie Karlsruhe, Lorenzstraße, Karlsruhe, Deutschland». При нажатии на этот элемент маркер не будет размещен на карте!

Но при поиске «Карлсруэ» и нажатии первого результата поиска «Карлсруэ, Германия» маркер размещается правильно.

В коде вызывается функция, называемая getPlace() ist.

var place = autocomplete.getPlace(); 

Место должно содержать объект «геометрия», но это не так.

Есть ли обходной путь для решения этой проблемы?

+0

Было интересно, тоже во время игры с API Адресов ранее. Многие типичные места не могут быть найдены через _nearbysearch_. Итак, вы не одиноки. – individual8

+1

Ошибка здесь: https://code.google.com/p/gmaps-api-issues/issues/detail?id=7498 – individual8

+0

Вау. Как эта критическая ошибка существует уже более месяца? Надеюсь, они исправит это в ближайшее время. – Michael

ответ

0

Выглядит, как это было зафиксировано в Google :)

1

Посмотрите в начале функции:

if (!place.geometry) { 
    return; 
} 

PlaceResult может, но не должен иметь geometry -свойства.

Чтобы выяснить, как работает автозаполнение:

, когда вы что-то типа, то API будет запрашивать предсказания (для заполнения выпадающего меню). Только когда вы выбираете место из выпадающего списка, он запрашивает данные (включая геометрию) для определенного места.

Очевидно, что существуют несоответствия используемых данных (API не должен предлагать место, где нет информации), но так оно и есть, может случиться так, что вы получите прогноз без места.

Обход: AFAIK нет

+0

Правильно, но при переходе на https://www.google.de/maps он работает нормально. Когда вы пишете «ZKM», он предлагает одно и то же место, а также устанавливает маркер. Поэтому должно быть рабочее решение. – Michael

+0

Почему должно быть решение? google.de не является реализацией карт-API. Может быть, например, места, где владельцы данных предоставили доступ для google.de, но не для пользователей карт-API. –

+1

Ну, это странно. При использовании API геокодирования местоположение «ZKM» найдено и включает в себя долготу и широту: http://maps.googleapis.com/maps/api/geocode/xml?address=zkm. Таким обходным решением может быть использование API геокодирования и создать собственный компонент автозаполнения. Но я надеюсь, что есть более простой способ ... Любые идеи? – Michael

Смежные вопросы