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://developers.google.com/maps/documentation/geocoding/intro?hl=ja#ComponentFiltering)
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) | 地名等 |
レスポンスのパターンを理解して、郵便番号で住所自動入力のフォームを実装できそうですね