Как можно получить текст адреса от Yandex Geocode подавая координаты?

Главные вкладки

Аватар пользователя andreystrelkov andreystrelkov 25 мая 2014 в 23:32

Помогите пожалуйста, как можно получить текст адреса (Улицу и дом) подавая в запросе координаты
нужен только текст, возращаемый по умолчанию JSON и XML, не знаю как обрабатывать, чтобы только получить адрес

Комментарии

Аватар пользователя andreystrelkov andreystrelkov 28 мая 2014 в 17:22

т.е. допустим у меня пользователь создаёт ноду, указывая на карте Yandex метку ( с помощью форматтера Yandex geofield от xandeadx), в итоге в поле записывается координаты
теперь как вариант можно сделать срабатывание рулзы, которая выполнит php код, целью которого получить от геокодера яндекса - json ответ, а она его обработает с помощью json_decode()

Аватар пользователя andreystrelkov andreystrelkov 28 мая 2014 в 18:28

извиняюсь за назойливость, PHP я практические не знаю, но немного погуглил, то я понимаю решением как следующее
допустим нода создаётся, рулза срабатывает, которая выполняет PHP код, в котором наверное происходит запрос к геокоду яндекса, который возращает JSON
тут я запускаю json_decode он превращает это в array, который я потом с помощью php regex array, ищу нужный текст и возращаю в drupal

нормальный метод, илил вообще чушь сказал, и можно всё проще

Аватар пользователя drupby drupby 28 мая 2014 в 22:39

"ХулиGUN" wrote:
dpm без девела разве пашет?

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

"ХулиGUN" wrote:
drupal_json_decode() принципиально?

"ХулиGUN" wrote:
json_decode() - преобразовывает json в массив php

если нужно получить именно массив без передачи второго аргумента в json_decode

хотя я рулесом не пользовался бы конечно в данном случае - если уж так нужно получить эти данные и как то их обработать, то проще это сделать в hook_node_presave, а там уже ставить точку останова и xdebug-ом пошагово смотреть , что имеется

Аватар пользователя andreystrelkov andreystrelkov 29 мая 2014 в 0:30

хренасе, сколько букв неизвестных Smile
вообще теперь теряюсь, т.к. я больше прикладник в drupal, то мне удобнее всё как нибудь через модули получать (хотя это наверно, в плане того же Rules PHP - как из пушки по воробьям)

прям в замешательстве теперь.

Вроде просто нужно выдрать значения поля, вроде name в json-е яндекса зовётся
и вставить его в какое нибудь текстовое поле АДРЕС

Аватар пользователя drupby drupby 29 мая 2014 в 1:22

"andreystrelkov" wrote:
Вроде просто нужно выдрать значения поля

ну если выдрать то

$url = 'http://geocode-maps.yandex.ru/1.x/?geocode=37.611,55.758&format=json';
$result = drupal_http_request($url);
$data = drupal_json_decode($result->data);

$data['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['name'] содержит "Тверская улица, 7"
$data['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['description'] содержит "Москва, Россия"
$data['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['text'] содержит "Россия, Москва, Тверская улица, 7"
$data['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['metaDataProperty']['GeocoderMetaData']['AddressDetails']['Country']['AddressLine'] содержит "Москва, Тверская улица, 7"