从纬度和经度获取国家/地区名称

Fun*_*nti 2 php google-maps google-geocoder

我有一个纬度和经度,我需要取国.

我用这个:

$geocode_stats = file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?latlng=".$deal_lat.",".$deal_long . "&sensor=false");
$output_deals = json_decode($geocode_stats);
$country = $output_deals->results[2]->address_components[4]->long_name;
Run Code Online (Sandbox Code Playgroud)

有时它会提供正确的国家/地区名称,但有时会提供空白值,有时会返回城市名称.

有人可以帮忙吗?

Tro*_*ven 6

我写了一个功能,让它变得简单.只需传入您的地理位置地址即可以是完整地址,邮政编码,也可以是您的纬度和经度.然后,它将搜索该国家/地区的地址组件数组.如果它无法找到县,它将只返回null,如果需要,可以将其更改为空字符串("").

function getGeoCounty($geoAddress) {
    $url = 'http://maps.google.com/maps/api/geocode/json?address=' . $geoAddress .'&sensor=false'; 
    $get     = file_get_contents($url);
    $geoData = json_decode($get);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new \InvalidArgumentException('Invalid geocoding results');
    }

    if(isset($geoData->results[0])) {
        foreach($geoData->results[0]->address_components as $addressComponent) {
            if(in_array('administrative_area_level_2', $addressComponent->types)) {
                return $addressComponent->long_name; 
            }
        }
    }
    return null; 
}
Run Code Online (Sandbox Code Playgroud)