Клуб API Карт

Как определить Регион РФ(субъект федерации) по заданым координатам.

HitmanMV
24 февраля 2014, 13:53

Есть доволно простая задача: существует точка на карте, надо узнать в каком регионе она находится. Не смотря на простоту, я уже обыскался, те решения которые я находил, сложно реализуемые и похожи на изобретение велосипеда, я был уверен, что есть простой способ.

Но даже в яндекс картах API в обьекте ymaps.geocode можно запросить улицу, дом, населеный пункт и т.п. , даже ближайшее метро но РЕГИОН НЕЛЬЗЯ!( кто не верит: http://api.yandex.ru/maps/doc/geocoder/desc/concepts/input_params.xml )

 

Подскажите пожалуйста, как просто реализовать эту задачу.

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

В ответе геокодера AdministrativeAreaName не оно разве?

А как его вызывать? У меня почему-то не получается. Можете дать ссылку на рабочий пример, где он используется.

Пример в песочнице после клика на балун показывает всю эту информацию

http://api.yandex.ru/maps/jsbox/event_reverse_geocode

Это я уже могу сделать, Но получить именно РЕГИОН по аналогии не получается( Поэтому нужен пример где получают именно субъект РФ.

 

http://joxi.ru/GWgLU_3JTJB2Wf9osa4 — а это что? не подходит?

Да херня в том, Что в поле administrativearea может быть разная информация, там не обязательно будет область, поробуйте сами. Поэтому прошу пример, Вы бы сами по счелкав по карте поняли, что не всегда там будет субьект федерации выдаватся.

 

 

В возвращаемом объекте всё есть, берите из него, Что и показал qfox.

Для тех кто столкнется, Вроде получилось у меня решить. Надо использовать решение через http запрос(я использовал cURL). Описание  тут: http://api.yandex.ru/maps/doc/geocoder/desc/concepts/response_structure.xml (см. делокации, нужно в запрос подсовывать тока координаты) . И парсите первый элемент который приходит в ответе.

echo

$res->GeoObjectCollection->featureMember[0]->GeoObject->metaDataProperty->GeocoderMetaData->AddressDetails->Country->AdministrativeArea->AdministrativeAreaName;

echo $res->GeoObjectCollection->featureMember[0]->GeoObject->metaDataProperty->GeocoderMetaData->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->SubAdministrativeAreaName;( если нужно учитывать, что Москва и Спб отдельные субьекты, проверяете что бы тут было написано Москва или Спб)