Обратное геокодирование: получить город и страну

Я хочу использовать обратное геокодирование, чтобы получить город и страну координат.

Вот два примера:

Гамбург, Германия

Бангкок, Тайланд

Мне всегда нужно первое address_components а затем два типа со значениями [ "locality" ] а также [ "country", "political" ] но я не знаю, как их нацелить.

Что у меня так далеко:

$url = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' . get_wpgeo_latitude( $post_id ) . ',' . get_wpgeo_longitude( $post_id ) . '&language=de';
$data = @file_get_contents( $url );
$jsondata = json_decode( $data, true );

print_r( $jsondata['results'][0]['address_components'][0]);

2

Решение

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

foreach($jsondata['results'] as $r) {
foreach($r['address_components'] as $n) {
if($n['types'][0] == "locality" && $n['types'][1] == "political") {
$city = $n['long_name'];
}

if($n['types'][0] == "country" && $n['types'][1] == "political") {
$country = $n['long_name'];
}
}
}

echo $city. ", ". $country. "</br>";
2

Другие решения

Чтобы получить более точный и прямой результат, вы можете явно запросить locality а также country Результаты. Для этого вам нужно добавить параметр result_type,

Используя ваш код, конечный результат будет:

$url = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' . get_wpgeo_latitude( $post_id ) . ',' . get_wpgeo_longitude( $post_id ) . '&result_type=country|locality&language=de';

Это получит ТОЛЬКО country а также locality лица в ответе. Быть гораздо более эффективным, быстрым, легким и точным.

0

По вопросам рекламы [email protected]