座標から英語表記の住所の取得方法

日本語の住所表記をgoogle翻訳したところ、順番が異なって返ってきたので、座標から英語表記の住所の取得を行いました。 今回、GoogelMapApiを用いてGeocodingを行います。

https://maps.google.com/maps/api/geocode/json?latlng=緯度,経度

まず、指定のURLへパラメータを付加してリクエストし、レスポンスをJSONで取得します。 今回は英語表記での住所が欲しかったため、language=enを追加しました。 次に取得したJSONを連想配列へと変換を行います。

$json = file_get_contents($url);
    $json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
    $arr = json_decode($json,true);

これでApiを叩いて返ってきた内容が連想配列へと変わりました。 最後に取得したい項目を配列の中から探し出し、それを返り値とすることで座標から英語表記の住所の取得の完成です。

(今回作成したコード)

function getAddress(){
  $infos = array(
    array(lat,lng)
  );
  $resultAddress = array();
  for($i=0;$i < count($infos); $i++){
    $lat = strval($infos[$i][0]);
    $lng = strval($infos[$i][1]);
    $url = "https://maps.googleapis.com/maps/api/geocode/json?language=en&latlng=".$lat.",".$lng."&key={APIキー}";
    print($url);
    $json = file_get_contents($url);
    $json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
    $arr = json_decode($json,true);
    $resultAddress[] = $arr["results"][1]["formatted_address"];
  }
  return $resultAddress ;
}