Помогите пожалуйста, как можно получить текст адреса (Улицу и дом) подавая в запросе координаты
нужен только текст, возращаемый по умолчанию JSON и XML, не знаю как обрабатывать, чтобы только получить адрес
т.е. допустим у меня пользователь создаёт ноду, указывая на карте Yandex метку ( с помощью форматтера Yandex geofield от xandeadx), в итоге в поле записывается координаты
теперь как вариант можно сделать срабатывание рулзы, которая выполнит php код, целью которого получить от геокодера яндекса - json ответ, а она его обработает с помощью json_decode()
извиняюсь за назойливость, PHP я практические не знаю, но немного погуглил, то я понимаю решением как следующее
допустим нода создаётся, рулза срабатывает, которая выполняет PHP код, в котором наверное происходит запрос к геокоду яндекса, который возращает JSON
тут я запускаю json_decode он превращает это в array, который я потом с помощью php regex array, ищу нужный текст и возращаю в drupal
нормальный метод, илил вообще чушь сказал, и можно всё проще
самый элементарный способ посмотреть содержимое полученного массива, если код задается в рулесе
"ХулиGUN" wrote:
drupal_json_decode() принципиально?
"ХулиGUN" wrote:
json_decode() - преобразовывает json в массив php
если нужно получить именно массив без передачи второго аргумента в json_decode
хотя я рулесом не пользовался бы конечно в данном случае - если уж так нужно получить эти данные и как то их обработать, то проще это сделать в hook_node_presave, а там уже ставить точку останова и xdebug-ом пошагово смотреть , что имеется
хренасе, сколько букв неизвестных
вообще теперь теряюсь, т.к. я больше прикладник в drupal, то мне удобнее всё как нибудь через модули получать (хотя это наверно, в плане того же Rules PHP - как из пушки по воробьям)
прям в замешательстве теперь.
Вроде просто нужно выдрать значения поля, вроде name в json-е яндекса зовётся
и вставить его в какое нибудь текстовое поле АДРЕС
$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"
Комментарии
т.е. допустим у меня пользователь создаёт ноду, указывая на карте Yandex метку ( с помощью форматтера Yandex geofield от xandeadx), в итоге в поле записывается координаты
теперь как вариант можно сделать срабатывание рулзы, которая выполнит php код, целью которого получить от геокодера яндекса - json ответ, а она его обработает с помощью json_decode()
извиняюсь за назойливость, PHP я практические не знаю, но немного погуглил, то я понимаю решением как следующее
допустим нода создаётся, рулза срабатывает, которая выполняет PHP код, в котором наверное происходит запрос к геокоду яндекса, который возращает JSON
тут я запускаю json_decode он превращает это в array, который я потом с помощью php regex array, ищу нужный текст и возращаю в drupal
нормальный метод, илил вообще чушь сказал, и можно всё проще
$result = drupal_http_request($url);
dpm(drupal_json_decode($result->data));
самый элементарный способ посмотреть содержимое полученного массива, если код задается в рулесе
если нужно получить именно массив без передачи второго аргумента в json_decode
хотя я рулесом не пользовался бы конечно в данном случае - если уж так нужно получить эти данные и как то их обработать, то проще это сделать в hook_node_presave, а там уже ставить точку останова и xdebug-ом пошагово смотреть , что имеется
хренасе, сколько букв неизвестных
вообще теперь теряюсь, т.к. я больше прикладник в drupal, то мне удобнее всё как нибудь через модули получать (хотя это наверно, в плане того же Rules PHP - как из пушки по воробьям)
прям в замешательстве теперь.
Вроде просто нужно выдрать значения поля, вроде name в 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"