Задать вопрос

Обработка ответа геокодера яндекс карт. Как узнать название города и улицу?

Собственно, интересует вопрос — как узнать название города и улицы по координатам. Пользователь кликает на карту, а ему в ответ: «Город такой-то, улица такая-то». На сколько я себе представляю, единственный способ — это обработка AddressDetails. Но нужные пункты могут быть на разных уровнях вложенности. А может их вообще не быть.


Существует ли другой способ, или может быть уже существует парсер ответов яндекс.карт?
  • Вопрос задан
  • 8386 просмотров
Подписаться 6 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
Вам именно через Яндекс надо?

Мне, кстати, их реализация стандарта xAL показалась очень внятной. Населённый пункт — LocalityName (если есть вложенные типа Зеленограда, то в DependentLocality), а улица — ThoroughfareName.

Если точка вне населённого пункта (LocalityName отсутствует), то можно найти ближайший с помощью параметра kind=locality. Аналогично находится ближайшая улица: kind=street. Внимание на разницу между двумя последними ссылками: «kind=street» выдаёт улицу вне населённого пункта «kind=locality». Просто Яндекс не знает названий улиц в ближайших деревнях, поэтому сообщил название шоссе (которое дальше, за деревнями). Это жизнь, и Яндекс-карты её хорошо отражают. Параметры я взял отсюда.

Проблему с уровнями вложенности не очень понял. Во-первых, порядок элементов там всегда один и тот же. Во-вторых, если честно, я на вложенность и не смотрел, т.к. строка <LocalityName xml:lang="%s">%s</LocalityName> приходила ко мне всегда (максимум) одна, как и ThoroughfareName. Да простят меня сторонники тру-парсинга XML, я тупо искал эти две строчки (ну и другие ещё).

Яндекс по России знает значительно больше населённых пунктов, чем Гугл, но с другими ГИС в промышленных масштабах не приходилось сравнивать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы