Нашёл решение. Касаемо Ирана, координаты на карте просто не правильно воспринимались (там было 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;