LoginSignup
23
16

More than 3 years have passed since last update.

【Google MapsAPI】GeoCoding API ~郵便番号で住所を検索する~

Last updated at Posted at 2020-03-28

GeoCoding API ~郵便番号で住所を検索する~

GeoCoding APIとは

GeoCoding APIは主に、住所を渡すと地理座標を返してくれるようなAPIです。
ショップリストで地図上にお店の場所となるマーカーを配置したり、そのお店の位置を地図で表示したりできるのも これでしょう。

スタートガイド
開発者向けドキュメント

GeoCoding APIを始めてみる

Geocoding APIを使用して開発を開始するにあたり、下記を設定する必要があります。

  • 請求先アカウントを作成(プロジェクトで請求を有効にする必要があります)
  • プロジェクトの作成&Geocoding APIの有効化
  • 認証要件(APIキー生成が必要です)

※下記の参考ページから「Get Stated」ボタンで設定を進めます。

【参考】Get Started with Google Maps Platform

GeoCoding APIを使ってみる

APIの使用法を確認します。

リクエストの形式は下記のフォーマットで行います。

レスポンスで受け取る形式をJSONかXMLで指定できます。

https://maps.googleapis.com/maps/api/geocode/{outputFormat(json or xml)}?{parameters}

Request(parameters)

今回は日本の郵便番号でリクエストを送り、住所を取得してみましょう。
下記のパラメータを指定してリクエストを送ります。
また、リクエストを送る際、レスポンス結果をフィルタリングすることもできます。

key Value
address 郵便番号
language 日本語
components レスポンス結果をフィルタリングする条件(詳細はこちら
key APIKey

※リクエストパラメータの詳細はこちら

https://maps.googleapis.com/maps/api/geocode/json?address=1008111&language=ja&components=country:JP&key={YOUR_API_KEY}

Response

レスポンスは下記のようにaddress_components配列の中で分類されて返ってきます。

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "100-8111",
               "short_name" : "100-8111",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "1",
               "short_name" : "1",
               "types" : [ "political", "sublocality", "sublocality_level_4" ]
            },
            {
               "long_name" : "千代田",
               "short_name" : "千代田",
               "types" : [ "political", "sublocality", "sublocality_level_2" ]
            },
            {
               "long_name" : "千代田区",
               "short_name" : "千代田区",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "東京都",
               "short_name" : "東京都",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "日本",
               "short_name" : "JP",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "日本 〒100-8111",
         "geometry" : {
            "location" : {
               "lat" : 35.6835978,
               "lng" : 139.7541838
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 35.6926604,
                  "lng" : 139.7701912
               },
               "southwest" : {
                  "lat" : 35.6745342,
                  "lng" : 139.7381764
               }
            }
         },
         "place_id" : "ChIJaWqAGwuMGGARe50QFyCjp78",
         "types" : [ "postal_code" ]
      }
   ],
   "status" : "OK"
}

※レスポンスの詳細はこちら

日本の住所の場合、毎度同じ形式ではないことに注意です!!

下記4パターンを比較すると。。。
※他にもパターンがあるかもしれません。

例1) 千葉県千葉市中央区春日 の場合

key Value
administrative_area_level_1 千葉県
locality 千葉市
sublocality 中央区
sublocality 春日

例2) 東京都千代田区千代田1 の場合

key Value
administrative_area_level_1 東京都
locality 千代田区
sublocality 千代田
sublocality 1

例3) 北海道松前郡松前町 の場合

key Value
administrative_area_level_1 北海道
administrative_area_level_2 松前郡
locality 松前町

例4) 東京都利島村 の場合

key Value
administrative_area_level_1 東京都
administrative_area_level_2 利島村

分類の大きさ順に下記のような感じでしょうか。

key Value
administrative_area_level_1 都道府県
administrative_area_level_2 郡、村
locality 市区町
sublocality(sublocality_level_1, sublocality_level_2) 地名等

レスポンスのパターンを理解して、郵便番号で住所自動入力のフォームを実装できそうですね:thumbsup:

23
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
16