Геокодер Yandex. Как получить ближайшее метро от адреса на php?
Брал всю инфу от сюда https://tech.yandex.ru/maps/geocoder/doc/desc/concepts/input_params-docpage/#input_params__example
Токен получил тут - https://developer.tech.yandex.ru/services/
Мой код:
$parameters = array(
'apikey' => 'f731a89f-4492-43ff-a822-9de189c2f71e',
'geocode' => 'Москва,+улица+Габричевского,+8',
'kind' => 'metro',
'results' => '1'
);
$response = file_get_contents('https://geocode-maps.yandex.ru/1.x/?'. http_build_query($parameters));
Вот такой ответ я получаю, вывожу через print_r (через echo тоже самое).

Если взять пример с документации.
https://geocode-maps.yandex.ru/1.x/?apikey=ваш API-ключ&geocode=37.611347,55.760241&kind=metro&results=1
Это работает и метро показывает. Я посмотрел где эти координаты, они вообще в Иране. А когда у себя в коде вставляю или координаты, или адрес - метро нету.
Ответы (1 шт):
Нашёл решение. Касаемо Ирана, координаты на карте просто не правильно воспринимались (там было 37.611347,55.760241, а надо было 55.760241,37.611347 то-есть поменять местами, а так всё хорошо).
У меня не получалось, потому-что почему-то по адресу, он не хотел показывать метро. Но если вставить координаты, то показывал. По этому первый запрос мы делаем что-бы получить координаты, а второй - чтобы получить метро.
$address = 'Самара,улица+22+Партсъезда,+15';
$parameters = array(
'apikey' => 'token',
'geocode' => $address, # Самара,улица+22+Партсъезда,+15
'format' => 'json'
);
$response = file_get_contents('https://geocode-maps.yandex.ru/1.x/?'. http_build_query($parameters));
$obj = json_decode($response, true);
$cord = str_replace(" ", ",", $obj['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['Point']['pos']);
$parameters = array(
'apikey' => 'token',
'geocode' => $cord,
'kind' => 'metro',
'format' => 'json'
);
$response = file_get_contents('https://geocode-maps.yandex.ru/1.x/?'. http_build_query($parameters));
$obj = json_decode($response, true);
$metro = $obj['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['name'];
echo $metro;
