住所をジオコーディングする

欧州経済領域(EEA)のデベロッパー

ジオコーディングは、住所を地図上の位置に変換します。 住所をジオコーディングすると、レスポンスには次のものが含まれます。

ジオコード リクエスト

ジオコード リクエストは HTTP GET リクエストです。住所は、構造化されていない 文字列として指定できます。

https://geocode.googleapis.com/v4/geocode/address/ADDRESS_STRING

または、クエリ パラメータで表される住所コンポーネントの構造化されたセットとして指定できます。

https://geocode.googleapis.com/v4/geocode/address?STRUCTURED_ADDRESS

通常、HTML フォームで取得した住所コンポーネントを処理する場合は、構造化された形式を使用します。

その他のパラメータはすべて URL パラメータとして渡します。API キーやフィールド マスクなどのパラメータの場合は、GET リクエストの一部としてヘッダーに含めて渡します。

構造化されていない住所文字列を渡す

構造化されていない住所は、文字列または Plus Code としてフォーマットされた住所です。 住所のジオコーディングでは、緯度と経度の座標、または住所や Plus Code を表さないその他の構造化されていない文字列は解決されません。このような文字列を使用するリクエストはサポートされておらず、エラー レスポンスや未指定の動作につながる可能性があります。サポートされていないクエリの例を次に示します。

クエリタイプ
緯度と経度の座標。代わりにリバース ジオコーディングを使用してください。 "37.422131,-122.084801"
1 つのクエリに、複数の場所、道路、都市の名前など、コンセプトや制約が多すぎる "Market Street San Francisco San Jose Airport"
Google マップに表示されない郵便住所要素 "C/O John Smith 123 Main Street"
"P.O. Box 13 San Francisco"
ビジネス、チェーン、カテゴリの名前と、これらのエンティティが利用できない場所の組み合わせ " Tesco near Dallas, Texas"
複数の解釈が可能な曖昧なクエリ "Charger drop-off"
現在使用されていない過去の名前 "Middlesex United Kingdom"
地理空間以外の要素またはインテント "How many boats are in Ventura Harbor?"
非公式の名前またはバニティ名 "The Jenga"
"The Helter Skelter"

たとえば、次の例では、URL エンコードされた住所文字列「1600 Amphitheatre Parkway, Mountain View, CA」を渡します。

https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA?key=API_KEY

URL の「+」文字がスペースに変換されていることに注意してください。

curl コマンドを使用してリクエストを行うこともできます。

curl -H "X-Goog-Api-Key: API_KEY" \
"https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA"

住所には、さまざまな種類の特殊文字を含めることができます。たとえば、「7/1 King St, Concord West」の「/」などです。「/」は %2F として URL エンコードします。

https://geocode.googleapis.com/v4/geocode/address/7%2F1+King+St,+Concord+West
?key=API_KEY

もう 1 つの一般的な例は、「9500 W Bryn Mawr Ave #650, Rosemont」の「#」文字です。「#」は %2FE として URL エンコードします。

https://geocode.googleapis.com/v4/geocode/address/9500+W+Bryn+Mawr+Ave+%23650,+Rosemont?key=API_KEY

次の例では、構造化されていない住所文字列を Plus Code 849VCWC8+R4 として指定します。「+」文字は %2B として URL エンコードしてください。

https://geocode.googleapis.com/v4/geocode/address/849VCWC8%2BR4?key=API_KEY

構造化された住所を渡す

構造化された住所を指定するには、address クエリ パラメータ(型は PostalAddress)を使用します。 PostalAddress オブジェクトを使用すると、リクエスト内の住所コンポーネントの一部またはすべてを個々のクエリ パラメータとして指定できます。

たとえば、住所の郵便番号のみを指定するには、PostalAddress.postalCode を使用します。

https://geocode.googleapis.com/v4/geocode/address?address.postalCode=01062&key=API_KEY

複数の住所コンポーネントを指定するには、複数のクエリ パラメータを使用します(HTML フォームで取得した住所コンポーネントなど)。

https://geocode.googleapis.com/v4/geocode/address?address.addressLines=1600+Amphithreater+Pkwy&address.locality=Mountain+View&address.administrativeArea=CA&key=API_KEY

OAuth を使用してリクエストを行う

Geocoding API v4 では、認証に OAuth 2.0 がサポートされています。Geocoding API で OAuth を使用するには、OAuth トークンに正しいスコープを割り当てる必要があります。 Geocoding API では、フォワード ジオコーディングで使用する次のスコープがサポートされています。

  • https://www.googleapis.com/auth/maps-platform.geocode - すべての Geocoding API メソッドで使用します。
  • https://www.googleapis.com/auth/maps-platform.geocode.address - フォワード ジオコーディングの GeocodeAddress でのみ使用します。

また、すべての Geocoding API メソッドで汎用的な https://www.googleapis.com/auth/cloud-platform スコープを使用することもできます。このスコープは、すべてのメソッドへのアクセスを許可する汎用的なスコープであるため、開発時には便利ですが、本番環境では使用できません。

詳細と例については、 OAuth を使用するをご覧ください。

ジオコード レスポンス

ジオコーディングは、 GeocodeAddressResponse オブジェクトの results 配列を含む GeocodeResult オブジェクトを返します。各 GeocodeResult オブジェクトは 1 つの場所を表します。

Geocoding API のレスポンスには、types 配列が GeocodeResult 内の次の 2 つの主要な場所にあります。

  1. GeocodeResult.types: この配列は、結果の全体的なタイプを示します。使用できる値は、プレイスのタイプ(新規)ページの表 A と表 B に記載されています。
  2. GeocodeResult.addressComponents[].types: 各住所コンポーネントには、 types 配列があり、住所の特定の部分のタイプを示します。 これらの値は、住所のタイプと住所コンポーネントのタイプの表(プレイスのタイプ(新規)ページ内)に記載されています。

完全な JSON オブジェクトの形式は次のとおりです。

{
  "results": [
    {
      "place": "//places.googleapis.com/places/ChIJF4Yf2Ry7j4AR__1AkytDyAE",
      "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE",
      "location": {
        "latitude": 37.422010799999995,
        "longitude": -122.08474779999999
      },
      "granularity": "ROOFTOP",
      "viewport": {
        "low": {
          "latitude": 37.420656719708511,
          "longitude": -122.08547523029148
        },
        "high": {
          "latitude": 37.4233546802915,
          "longitude": -122.0827772697085
        }
      },
      "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
      "postalAddress": {
        "regionCode": "US",
        "languageCode": "en",
        "postalCode": "94043",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1600 Amphitheatre Pkwy"
        ]
      },
      "addressComponents": [
        {
          "longText": "1600",
          "shortText": "1600",
          "types": [
            "street_number"
          ]
        },
        {
          "longText": "Amphitheatre Parkway",
          "shortText": "Amphitheatre Pkwy",
          "types": [
            "route"
          ],
          "languageCode": "en"
        },
        ...
      ],
      "types": [
        "street_address"
      ],
      "plusCode": {
        "globalCode": "849VCWC8+R4",
        "compoundCode": "CWC8+R4 Mountain View, CA, USA"
      }
    }
  ]
}

必須パラメータ

  • address - ジオコーディングする番地または Plus Code注: 住所のジオコーディングでは、緯度と経度の座標、 または住所や Plus Code を表さないその他の構造化されていない文字列は解決されません。詳細とサポートされていないクエリの例については、構造化されていない住所文字列を渡す をご覧ください。 対象国の郵便業務で使用されている形式 で住所を指定します。店名、組織名、部屋番号、階数など、住所以外の要素は指定しないでください。番地の要素は、スペース(%20 に URL エンコード)で区切る必要があります 。たとえば、「24 Sussex Drive Ottawa ON」という住所を渡す場合は、次のようにします。
    24%20Sussex%20Drive%20Ottawa%20ON
    Plus Code は次のような形式にします。プラス記号は %2B に URL エンコードされ、スペースは %20: に URL エンコードされます。
    • グローバル コード は、4 文字のエリアコードと 6 文字以上の ローカルコードです。たとえば、「849VCWC8+R9」は 849VCWC8%2BR9 としてエンコードします。
    • 複合コード は、明示的な場所を含む 6 文字以上のローカルコードです。たとえば、「CWC8+R9 Mountain View, CA, USA」 は CWC8%2BR9%20Mountain%20View%20CA%20USA としてエンコードします。

オプション パラメータ

  • locationBias

    検索する領域を Viewportとして指定します。 この場所はバイアスとして機能します。つまり、指定した場所の周辺の結果(領域の近くにあるが領域外の結果を含む)を返すことができます。

    リージョンは長方形のビューポート として指定します。長方形は、 対角線上の 2 つの 低点と高点で表される緯度と経度のビューポートです。低点は長方形の南西 の角を表し、高点は長方形の北東 の角を表します。

    ビューポートは 閉じた領域と見なされます。つまり、境界が含まれます。緯度の範囲は -90 ~ 90 度、経度の範囲は -180 ~ 180 度にする必要があります。

    • low = high の場合、ビューポートはその 1 点で構成されます。
    • low.longitude > high.longitude の場合、経度の範囲が反転します(ビューポートが経度 180 度の線を越えます)。
    • low.longitude = -180 度、 high.longitude = 180 度の場合、ビューポートにはすべての 経度が含まれます。
    • low.longitude = 180 度、 high.longitude = -180 度の場合、経度の範囲は 空になります。
    • low.latitude > high.latitude の場合、緯度の範囲は空になります。

    低点と高点の両方を入力する必要があります。また、表されるボックスを空にすることはできません 。ビューポートが空の場合、エラーが発生します。

    たとえば、次のクエリ文字列は、ニューヨーク市を完全に囲むビューポートを定義します。

    ?locationBias.rectangle.low.latitude=40.477398&locationBias.rectangle.low.longitude=-74.259087&locationBias.rectangle.high.latitude=40.91618&locationBias.rectangle.high.longitude=-73.70018
  • languageCode

    結果を返す言語。

    • サポートされている言語の 一覧をご覧ください。サポート対象の言語は頻繁に更新されるため、このリストで網羅されていない場合があります。
    • languageCode が指定されていない場合、API はデフォルトで en に設定されます。無効な言語コードを指定すると、API は INVALID_ARGUMENT エラーを返します。
    • API は、ユーザーと地域住民の両方が読める番地を提供できるよう 最善を尽くします。そのために、優先言語に従って、必要に応じてユーザーが読めるスクリプトに音訳された番地を現地の言語で返します。その他の 住所はすべて優先言語で返されます。住所コンポーネントは すべて同じ言語で返されます。この言語は最初の コンポーネントから選択されます。
    • 優先言語で名前が利用できない場合、API は最も近い一致を使用します。
    • 優先言語は、API が返す結果のセットと、結果が返される順序にわずかな影響を与えます。ジオコーダは、言語によって略語(通りの種類の略語など)を異なる方法で解釈します。また、ある言語では有効でも別の言語では有効でない同義語もあります。
  • regionCode

    地域コード( 2 文字の CLDR コード 値)。デフォルト値はありません。ほとんどの CLDR コードは ISO 3166-1 コードと同じです。

    住所をジオコーディングする場合(フォワード ジオコーディング)、このパラメータは、サービスから指定された地域への結果に影響を与える可能性がありますが、完全に制限するわけではありません。 場所やプレイスをジオコーディングする場合(リバース ジオコーディングまたはプレイス ジオコーディング)、このパラメータを使用して住所の形式を設定できます。いずれの場合も、このパラメータは適用される法律に基づいて結果に影響を与える可能性があります。

  • FieldMask

    レスポンスで返すフィールドを指定するレスポンス フィールド マスクを作成します。レスポンス フィールド マスクをメソッドに渡すには、URL パラメータ $fields または fields を使用するか、HTTP ヘッダー X-Goog-FieldMask を使用します。たとえば、次のリクエストでは、レスポンスの placeID フィールドのみが返されます。

    curl -X GET -H 'Content-Type: application/json' \
    -H 'X-Goog-FieldMask: results.placeId' \
    -H "X-Goog-Api-Key: API_KEY" \
    https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA
    
    レスポンスは次のとおりです。
    {
      "results": [
        {
          "placeId": "ChIJiSSC8QK6j4AR98Thup8mqTc"
        }
      ]
    }

    詳細については、返すフィールドの選択をご覧ください。

位置情報のバイアス

locationBias パラメータを使用して、ジオコーディング サービスが特定のビューポート内の結果を優先するように指定します(境界ボックスとして表現されます)。locationBias パラメータは、この境界ボックスの南西と北東の角の緯度と経度の座標を定義します。

たとえば、「Washington」という住所のジオコード リクエストでは、ワシントン D.C. と米国ワシントン州の結果が返されることがあります。

https://geocode.googleapis.com/v4/geocode/address/Washington?key=API_KEY

レスポンスの形式は次のとおりです。

{
  "results": [
    {
      "place": "//places.googleapis.com/places/ChIJW-T2Wt7Gt4kRKl2I1CJFUsI",
      "placeId": "ChIJW-T2Wt7Gt4kRKl2I1CJFUsI",
      "location": {
        "latitude": 38.9071923,
        "longitude": -77.0368707
      },
      "granularity": "APPROXIMATE",
      "viewport": {
        "low": {
          "latitude": 38.7916449,
          "longitude": -77.119759
        },
        "high": {
          "latitude": 38.9958641,
          "longitude": -76.909393
        }
      },
      "bounds": {
        "low": {
          "latitude": 38.7916449,
          "longitude": -77.119759
        },
        "high": {
          "latitude": 38.9958641,
          "longitude": -76.909393
        }
      },
      "formattedAddress": "Washington, DC, USA",
      "addressComponents": [
        {
          "longText": "Washington",
          "shortText": "Washington",
          "types": [
            "locality",
            "political"
          ],
          "languageCode": "en"
        },
        ...
      ],
      "types": [
        "locality",
        "political"
      ]
    },
    {
      "place": "//places.googleapis.com/places/ChIJ-bDD5__lhVQRuvNfbGh4QpQ",
      "placeId": "ChIJ-bDD5__lhVQRuvNfbGh4QpQ",
      "location": {
        "latitude": 47.7510741,
        "longitude": -120.7401386
      },
      "granularity": "APPROXIMATE",
      "viewport": {
        "low": {
          "latitude": 45.543541,
          "longitude": -124.84897389999999
        },
        "high": {
          "latitude": 49.0024945,
          "longitude": -116.91607109999998
        }
      },
      "bounds": {
        "low": {
          "latitude": 45.543541,
          "longitude": -124.84897389999999
        },
        "high": {
          "latitude": 49.0024442,
          "longitude": -116.91607109999998
        }
      },
      "formattedAddress": "Washington, USA",
      "addressComponents": [
        {
          "longText": "Washington",
          "shortText": "WA",
          "types": [
            "administrative_area_level_1",
            "political"
          ],
          "languageCode": "en"
        },
      ...
      ],
      "types": [
        "administrative_area_level_1",
        "political"
      ]
    }
  ]
}

ただし、米国の北東部周辺の境界ボックスを定義する locationBias パラメータを追加すると、このジオコードはワシントン D.C. の都市のみを返します。

https://geocode.googleapis.com/v4/geocode/address/Washington?locationBias.rectangle.low.latitude=36.47&locationBias.rectangle.low.longitude=-84.72&locationBias.rectangle.high.latitude=43.39&locationBias.rectangle.high.longitude=-65.90&key=API_KEY

リージョンのバイアス

ジオコーディング リクエストでは、regionCode パラメータを使用して、ジオコーディング サービスが特定の地域を優先して結果を返すように指定できます。このパラメータは、 リージョンのバイアスを指定する 2 文字の CLDR コード値を受け取ります。ほとんどの CLDR コードは ISO 3166-1 コードと同じです。

regionCode にデフォルト値はありません。たとえば、「Toledo」をジオコーディングすると、米国とスペインの結果が返されます。

https://geocode.googleapis.com/v4/geocode/address/Toledo?key=API_KEY

対応:

{
  "results": [
    {
      "place": "//places.googleapis.com/places/ChIJeU4e_C2HO4gRRcM6RZ_IPHw",
      "placeId": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw",
      "location": {
        "latitude": 41.652805199999996,
        "longitude": -83.5378674
      },
      "granularity": "APPROXIMATE",
      "viewport": {
        "low": {
          "latitude": 41.579513,
          "longitude": -83.6944089
        },
        "high": {
          "latitude": 41.733036,
          "longitude": -83.4493851
        }
      },
      "bounds": {
        "low": {
          "latitude": 41.579513,
          "longitude": -83.6944089
        },
        "high": {
          "latitude": 41.733036,
          "longitude": -83.4493851
        }
      },
      "formattedAddress": "Toledo, OH, USA",
      "addressComponents": [
        {
          "longText": "Toledo",
          "shortText": "Toledo",
          "types": [
            "locality",
            "political"
          ],
          "languageCode": "en"
        },
        ...
      ],
      "types": [
        "locality",
        "political"
      ]
    },
    {
      "place": "//places.googleapis.com/places/ChIJkwyrlqwLag0RiQIn2fdIshM",
      "placeId": "ChIJkwyrlqwLag0RiQIn2fdIshM",
      "location": {
        "latitude": 39.8628296,
        "longitude": -4.0273067
      },
      "granularity": "APPROXIMATE",
      "viewport": {
        "low": {
          "latitude": 39.8116682,
          "longitude": -4.179933
        },
        "high": {
          "latitude": 39.9251319,
          "longitude": -3.8148935
        }
      },
      "bounds": {
        "low": {
          "latitude": 39.8116682,
          "longitude": -4.179933
        },
        "high": {
          "latitude": 39.9251319,
          "longitude": -3.8148935
        }
      },
      "formattedAddress": "Toledo, España",
      "addressComponents": [
        {
          "longText": "Toledo",
          "shortText": "Toledo",
          "types": [
            "administrative_area_level_4",
            "political"
          ],
          "languageCode": "es"
        },
        ...
      ],
      "types": [
        "administrative_area_level_4",
        "political"
      ]
    },
    ...
  ]
}

regionCode=es(スペイン)を指定して「Toledo」のジオコーディング リクエストを行うと、スペインの結果のみが返されます。

https://geocode.googleapis.com/v4/geocode/address/Toledo?regionCode=es&key=API_KEY