youmixx
@youmixx
PHP Developer

Геокодер Yandex. Как получить ближайшее метро от адреса на php?

Брал всю инфу от сюда https://tech.yandex.ru/maps/geocoder/doc/desc/conc...

Токен получил тут - https://developer.tech.yandex.ru/services/
5ee381768efcc566911643.png

Вот код.
$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));


Вот такой ответ:
5ee381d332a52646531445.png

Если взять пример с документации.
https://geocode-maps.yandex.ru/1.x/?apikey=ваш API-ключ&geocode=37.611347,55.760241&kind=metro&results=1


Это работает и метро показывает. Я посмотрел где эти координаты, они вообще в Иране.
А когда у себя в коде вставляю или координаты, или адрес - метро нету.
  • Вопрос задан
  • 1926 просмотров
Решения вопроса 1
youmixx
@youmixx Автор вопроса
PHP Developer
Нашёл решение. Касаемо Ирана, координаты на карте просто не правильно воспринимались (там было 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;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы