Google Maps APIでリバースジオコーディング

Pocket

Google Maps API v3を使って、ジオコードから住所を割り出す方法。
以下では、都道府県と市区町村レベルまで取り出す。

$lat = '35';
$lng = '139';
// 日本語で欲しいのでlanguage=ja 指定。sensor=true/falseは必須
$url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='.$lat.','.$lng.'&language=ja&sensor=true';
$json = file_get_contents($url);
$rg = json_decode($json);
// ここでprint_r($rg)すると全部見えるが、欲しいところだけを見る。
// 実際$rgには'results'がいっぱいあるが、都道府県と市区町村ぐらいなら全部同じっぽい
$results = $rg->{'results'}[0]->{'address_components'} ;
foreach($results as $key=>$array)
{
$value = $array->{'long_name'};
$name = $array->{'types'}['0'];
    // 欲しいところだけ格納
if($name == 'country' ) // 都道府県
$reverse_geocode['country'] = $value;
elseif($name == 'administrative_area_level_1' ) // 都道府県
$reverse_geocode['administrative_area_level_1'] = $value;
elseif($name == 'locality' )
$reverse_geocode['locality'] = $value;
elseif($name == 'postal_code' )
$reverse_geocode['postal_code'] = $value;
}
print_r($reverse_geocode);

注意点

Use of the Google Geocoding API is subject to a query limit of 2,500 geolocation requests per day. (User of Google Maps API for Business may perform up to 100,000 requests per day.)

参照

https://developers.google.com/maps/documentation/geocoding/

この記事を書いた人