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.)