Клуб API Карт

"Как получить улицу" или "Дебри ответа ymaps.geocode"

mireqfallen
10 декабря 2012, 18:07

Добрый день всем.

Возникла задача: получить адрес (улица + дом) по координатам.

Геокодер возвращает результаты, результаты правильные.

А вот извлечь информацию... оказалось не так просто.

 

Полез в дебри ответа геокодера...

Нашел, что улицу можно выковырять так:

 

...

var obj = res.geoObjects.get(0);

...

var street = obj.properties.get('metaDataProperty').GeocoderMetaData.AddressDetails.Country.AdministrativeArea.Locality.Thoroughfare;

 

Это вообще некрасивое решение, но... другого выхода я не вижу...

И я бы так и оставил (проект недалеко, всегда можно поправить, если что), но!

Иногда между Locality и Thoroughfare геокодер вставляет DependentLocality...

 

Вразумите слепого, как правильно вытаскивать из ответа геокодера улицу и дом?

 

Заранее спасибо.

8 комментариев
Подписаться на комментарии к посту

Метод get у менеджера данных принимает значение по-умолчанию во втором параметре, к тому же вы можете писать полный путь в первом параметре (строке) чтобы не громоздить проверки наличия нужных полей у объекта.

Итого:

var street = obj.properties.get('metaDataProperty.GeocoderMetaData.AddressDetails.Country.AdministrativeArea.Locality.Thoroughfare',

obj.properties.get('metaDataProperty.GeocoderMetaData.AddressDetails.Country.AdministrativeArea.Locality.DependentLocality.Thoroughfare'));

Ок, спасибо :)

Хотя, когда начинал тему, не думал, что все-таки придется писать длинные и непонятные строки...

obj.properties.get('name')

Давненько ты не заглядывал в наш кабак.

А у вас наливают?

Некоторым, похоже, даже отсыпают.

на будущее, может кто гуглить будет и попадёт на эту страницу..

https://gist.github.com/Coltspb/5788975 

Видимо я совсем из будущего. Не работает уже ссылка (