ジオコーディングのリクエストとレスポンス

リクエスト

Geocoding API リクエストの形式は次のとおりです。

https://maps.googleapis.com/maps/api/geocode/outputFormat?parameters

outputFormat には次のいずれかの値を設定します。

  • json(推奨): 出力が JSON(JavaScript Object Notation)であることを示します。
  • xml: 出力が XML であることを示します。

HTTPS が必要です。

パラメータには、必須パラメータと省略可能なパラメータがあります。URL の標準と同様に、パラメータはアンパサンド(&)文字を使用して区切ります。

このページの以降の部分では、ジオコーディングとリバース ジオコーディングについてそれぞれ説明します。この 2 種類のリクエストでは、利用可能なパラメータが異なります。

ジオコーディング(緯度と経度の検索)パラメータ

ジオコーディング リクエストの必須パラメータ:

  • key - アプリケーションの API キー。このキーを使ってアプリケーションを識別し、割り当て量を管理します。キーを取得する方法を学ぶ。
  • リクエストで address または components のいずれか、または両方を指定する必要があります。

    • address - ジオコーディングする住所またはplus code。対象国の郵便業務で使用されている形式で住所を指定します。店名や組織名、部屋番号、階数など、その他の住所の要素は指定しないでください。住所要素はスペースで区切る必要があります(ここでは %20 に URL エスケープされています)。
      address=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)。
    • components - 要素がパイプ(|)で区切られたコンポーネント フィルタ。address が指定されている場合、コンポーネント フィルタはオプションのパラメータとして指定することもできます。コンポーネント フィルタの各要素は component:value ペアで構成され、ジオコーダからの結果を完全に制限します。詳しくは、後述のコンポーネントのフィルタリングをご覧ください。

詳細なガイダンスについては、よくある質問をご覧ください。

ジオコーディング リクエストの省略可能なパラメータ:

  • bounds - ジオコーディングの結果に大きくバイアスをかけるビューポートの境界ボックス。このパラメータは、ジオコーダから返される結果に影響を与えますが、完全に制限するわけではありません。(詳細については、後述のビューポートのバイアス設定をご覧ください)。
  • language - 結果を返す言語。
    • サポートされている言語の一覧をご覧ください。サポートされる言語は頻繁に更新されるため、このリストがすべてのサポート言語を網羅しているとは限りません。
    • language が指定されていない場合、ジオコーダは、Accept-Language ヘッダーで指定された優先言語か、リクエストの送信元ドメインの言語の使用を試みます。
    • ジオコーダは、できるだけユーザーとローカルの両言語で判読可能な番地を返します。そのために、ジオコーダはローカル言語で番地を返し、優先言語も考慮して、必要に応じてユーザーが理解できるスクリプトに書き直します。それ以外の住所はすべて、優先言語で返されます。住所コンポーネントはすべて、最初のコンポーネントで選択した言語と同じ言語で返されます。
    • 優先言語で名前を表示できない場合、ジオコーダは最も近い言語を使用します。
    • 優先言語は、API が返す結果や、結果が返される順序に多少影響します。「~通り」を表す略語や特定の言語だけで有効な同義語など、ジオコーダによる略語の解釈は言語によって異なります。たとえば、utcatér は、ハンガリー語でそれぞれ「通り」と「広場」を表す同義語です。
  • region - ccTLD(「トップレベル ドメイン」)の 2 文字の値として指定される地域コード。このパラメータは、ジオコーダから返される結果に影響を与えますが、完全に制限するわけではありません。(詳細については、下記の地域のバイアスをご覧ください)。このパラメータは、適用される法律に基づいて結果に影響することもあります。
  • components - 要素がパイプ(|)で区切られたコンポーネント フィルタ。リクエストに address が含まれていない場合、コンポーネント フィルタは必須です。コンポーネント フィルタ内の各要素は component:value ペアで構成され、ジオコーダからの結果を完全に制限します。詳しくは、後述のコンポーネントのフィルタリングをご覧ください。
  • extra_computations - このパラメータを使用して、レスポンスで次の追加機能を指定します。 同じ API リクエストで複数の機能を有効にするには、各機能のリクエストに extra_computations パラメータを含めます。たとえば、次のようにします。
    extra_computations=ADDRESS_DESCRIPTORS&extra_computations=BUILDING_AND_ENTRANCES

レスポンス

ジオコーディングのレスポンスは、URL リクエスト内の output フラグで指定された形式で返されます。デフォルトでは JSON 形式です。

この例では、Geocoding API は住所「1600 Amphitheatre Parkway, Mountain View, CA」について照会する json レスポンスをリクエストしています。

このリクエストは、JSON output フラグを使用した例です。

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

このリクエストは、XML output フラグを使用した例です。

https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

次のタブを選択すると、JSON と XML のレスポンスの例が表示されます。

JSON

{
    "results": [
        {
            "address_components": [
                {
                    "long_name": "1600",
                    "short_name": "1600",
                    "types": [
                        "street_number"
                    ]
                },
                {
                    "long_name": "Amphitheatre Parkway",
                    "short_name": "Amphitheatre Pkwy",
                    "types": [
                        "route"
                    ]
                },
                {
                    "long_name": "Mountain View",
                    "short_name": "Mountain View",
                    "types": [
                        "locality",
                        "political"
                    ]
                },
                {
                    "long_name": "Santa Clara County",
                    "short_name": "Santa Clara County",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "California",
                    "short_name": "CA",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "United States",
                    "short_name": "US",
                    "types": [
                        "country",
                        "political"
                    ]
                },
                {
                    "long_name": "94043",
                    "short_name": "94043",
                    "types": [
                        "postal_code"
                    ]
                },
                {
                    "long_name": "1351",
                    "short_name": "1351",
                    "types": [
                        "postal_code_suffix"
                    ]
                }
            ],
            "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
            "geometry": {
                "location": {
                    "lat": 37.4222804,
                    "lng": -122.0843428
                },
                "location_type": "ROOFTOP",
                "viewport": {
                    "northeast": {
                        "lat": 37.4237349802915,
                        "lng": -122.083183169709
                    },
                    "southwest": {
                        "lat": 37.4210370197085,
                        "lng": -122.085881130292
                    }
                }
            },
            "place_id": "ChIJRxcAvRO7j4AR6hm6tys8yA8",
            "plus_code": {
                "compound_code": "CWC8+W7 Mountain View, CA",
                "global_code": "849VCWC8+W7"
            },
            "types": [
                "street_address"
            ]
        }
    ],
    "status": "OK"
}

JSON レスポンスには次の 2 つのルート要素が含まれています:

  • "status" にはリクエストに関するメタデータが含まれます。下記のステータス コードをご覧ください。
  • "results" には、ジオコード済みの住所情報とジオメトリ情報の配列が含まれます。

通常、住所検索で返されるのは、"results" 配列の 1 つのエントリのみですが、address クエリがあいまいな場合には、複数の結果が返される可能性があります。

XML

<GeocodeResponse>
    <status>OK</status>
    <result>
        <type>street_address</type>
        <formatted_address>1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA</formatted_address>
        <address_component>
            <long_name>1600</long_name>
            <short_name>1600</short_name>
            <type>street_number</type>
        </address_component>
        <address_component>
            <long_name>Amphitheatre Parkway</long_name>
            <short_name>Amphitheatre Pkwy</short_name>
            <type>route</type>
        </address_component>
        <address_component>
            <long_name>Mountain View</long_name>
            <short_name>Mountain View</short_name>
            <type>locality</type>
            <type>political</type>
        </address_component>
        <address_component>
            <long_name>Santa Clara County</long_name>
            <short_name>Santa Clara County</short_name>
            <type>administrative_area_level_2</type>
            <type>political</type>
        </address_component>
        <address_component>
            <long_name>California</long_name>
            <short_name>CA</short_name>
            <type>administrative_area_level_1</type>
            <type>political</type>
        </address_component>
        <address_component>
            <long_name>United States</long_name>
            <short_name>US</short_name>
            <type>country</type>
            <type>political</type>
        </address_component>
        <address_component>
            <long_name>94043</long_name>
            <short_name>94043</short_name>
            <type>postal_code</type>
        </address_component>
        <geometry>
            <location>
                <lat>37.4224428</lat>
                <lng>-122.0842467</lng>
            </location>
            <location_type>ROOFTOP</location_type>
            <viewport>
                <southwest>
                    <lat>37.4212648</lat>
                    <lng>-122.0856069</lng>
                </southwest>
                <northeast>
                    <lat>37.4239628</lat>
                    <lng>-122.0829089</lng>
                </northeast>
            </viewport>
        </geometry>
        <place_id>ChIJeRpOeF67j4AR9ydy_PIzPuM</place_id>
        <plus_code>
            <global_code>849VCWC8+X8</global_code>
            <compound_code>CWC8+X8 Mountain View, CA</compound_code>
        </plus_code>
    </result>
</GeocodeResponse>

XML レスポンスは 1 つの <GeocodeResponse> 要素と 2 つの最上位要素で構成されることに注意してください。

  • <status> にはリクエストに関するメタデータが含まれます。下記のステータス コードをご覧ください。
  • <result> 要素(ゼロ個以上)には、ジオコード済みの住所情報とジオメトリ情報の組み合わせが 1 つ含まれています。

XML レスポンスは、JSON レスポンスに比べてかなり長くなります。そのため、何らかの理由でサービスで xml を使用する必要がない限り、Google では、優先出力フラグとして json を使用することをおすすめしています。さらに、XML ツリーの処理では、適切なノードと要素を参照できるためには、ある程度気を配る必要があります。出力処理のお勧めの設計パターンについては、 XPath による XML の処理をご覧ください。

  • XML の結果はルート要素 <GeocodeResponse> でラップされます。
  • JSON は複数の配列(types)によって複数の要素を含むエントリを示しますが、XML は複数の単一要素(<type>)でこれらを示します。
  • JSON では空の要素は空の配列で示しますが、XML ではそのような要素を使用しないことで示します。たとえば、結果が生成されないレスポンスは、JSON では空の results 配列を返しますが、XML では <result> 要素を返しません。

ステータス コード

ジオコーディング レスポンス オブジェクトの "status" フィールドには、リクエストのステータスが含まれます。ジオコーディングが行えなかった原因を追跡できるようにデバッグ情報が含まれることもあります。"status" フィールドには次の値が含まれることがあります。

  • "OK" は、エラーが発生せず、住所が正常に解析され、少なくとも 1 件のジオコードが返されたことを示します。
  • "ZERO_RESULTS" は、ジオコードは成功したものの結果が返されなかったことを示します。これは、実在しない address がジオコーダに渡された場合に発生することがあります。
  • OVER_DAILY_LIMIT は次のいずれかを示します。
    • API キーがないか、無効です。
    • お客様のアカウントで課金が有効になっていません。
    • ご自身で設定した使用量の上限を超えている
    • 設定したお支払い方法が無効になっている(クレジット カードの期限切れなど)

    解決方法については、マップに関するよくある質問をご覧ください。

  • "OVER_QUERY_LIMIT" はリクエストが割り当て量を超えていることを示します。
  • "REQUEST_DENIED" はリクエストが拒否されたことを示します。
  • "INVALID_REQUEST" は一般的に、クエリ(addresscomponentslatlng)が不足していることを示します。
  • "UNKNOWN_ERROR" はサーバーエラーでリクエストが処理できなかったことを示します。再度リクエストすると、成功する可能性があります。

エラー メッセージ

ジオコーダから OK 以外のステータス コードが返された場合、ジオコーディング レスポンス オブジェクト内に error_message フィールドが付加されている場合があります。このフィールドには、返されたステータス コードの原因に関する詳細情報が含まれています。

結果

ジオコーダが結果を返す場合、結果は(JSON)results 配列内に格納されます。ジオコーダから返す結果がない(たとえば、住所が存在しない)場合でも、空の results 配列が返されます。(XML レスポンスは、ゼロ個以上の <result> 要素で構成されます)。

一般的な結果には、次のフィールドが含まれます。

  • types[] 配列は、返された結果の「タイプ」を示す配列です。この配列には、結果として返された対象物のタイプを表す 0 個以上のタグのセットが含まれています。たとえば、「Chicago」のジオコードは「Chicago」が市であることを示す「locality」と、行政区画であることを示す「political」を返します。住所コンポーネントに既知のタイプがない場合、コンポーネントのタイプ アレイが空になることがあります。API は必要に応じて新しい型値を追加することがあります。詳細については、住所タイプと住所コンポーネントをご覧ください。
  • formatted_address は、人が読める形式のこの場所の住所を含む文字列です。

    ほとんどの場合、この住所は「郵便の宛先」と同一です。イギリスなど一部の国では、ライセンス上の制限があるため実際の郵便の宛先は配信できません。

    フォーマット済み住所は、論理的には 1 つ以上の住所コンポーネントで構成されます。たとえば、「111 8th Avenue, New York, NY」という住所は、「111」(番地)、「8th Avenue」(道路名)、「New York」(都市名)、「NY」(アメリカの州名)で構成されています。

    フォーマット済み住所は、プログラムで解析しないでください。その代わりに、フォーマット済み住所のフィールドに加えて、API レスポンスに含まれる個々の住所コンポーネントを使用してください。

  • address_components[] は、この住所に適用される個々のコンポーネントを含む配列です。

    通常、各住所コンポーネントには次のフィールドがあります。

    • types[] は住所コンポーネントのタイプを示す配列です。サポートされているタイプのリストをご覧ください。
    • long_name は、ジオコーダが返した住所コンポーネントの説明または名前です。
    • short_name は、住所コンポーネントの略称です(略称がある場合)。たとえば、アラスカ州の住所コンポーネントの場合は、long_name には「Alaska」が設定され、short_name には 2 文字の郵便略称を使用して「AK」が設定されます。

    address_components[] 配列については、次の点に注意してください。

    • 住所コンポーネントの配列には、formatted_address よりも多くのコンポーネントが含まれている場合があります。
    • この配列には、formatted_address に含まれているもの以外の住所を持つ行政区画が、すべて含まれているとは限りません。特定の住所を含むすべての行政区画を取得するには、リバース ジオコーディングを使用して住所の緯度と経度をパラメータとしてリクエストに渡します。
    • レスポンスの形式は、リクエスト間で同じになるとは限りません。特に、address_components の数はリクエストされた住所によって異なり、同じ住所でも将来的に変わる可能性があります。コンポーネントは、配列内の位置が変わる場合があります。 コンポーネントのタイプは変わる場合があります。特定のコンポーネントが以降のレスポンスに含まれない場合があります。

    コンポーネントの配列を処理するには、レスポンスを解析し、式を使用して適切な値を選択する必要があります。 レスポンスの解析のガイドをご覧ください。

  • postcode_localities[] は、郵便番号に含まれる最大 100 の地域区分を示す配列です。このフィールドは、結果の郵便番号に複数の地域が含まれる場合のみ存在します。
  • geometry には、次の情報が含まれています。
    • location には、ジオコーディングされた緯度と経度の値が含まれます。通常のアドレス検索では、一般に、このフィールドが一番重要になります。
    • location_type には、指定した場所に関する追加データが格納されます。現在サポートされている値は、以下のとおりです。

      • "ROOFTOP": 返された結果が番地までの精度で位置情報が登録されている正確なジオコードであることを示します。
      • "RANGE_INTERPOLATED" は、返された結果が(交差点などの)正確な 2 地点間で補間された近似値(通常は道路上)を反映していることを示します。補間された結果が返されるのは、番地に対してルーフトップ ジオコーディングが使用できない場合が一般的です。
      • "GEOMETRIC_CENTER" は、返された結果が、ポリライン(道路など)やポリゴン(地域)などの幾何学的な中心であることを示します。
      • "APPROXIMATE" は、返された結果が近似値であることを示します。
    • viewport には、返された結果を表示する推奨ビューポートが含まれています。これには、ビューポートの境界ボックスの southwestnortheast の角を示す緯度と経度の値が 2 つ含まれています。通常は、ユーザーに結果を表示する際にこのビューポートを使用します。
    • bounds(オプションで返される)には、返された結果をすべて含むことができる境界ボックスが格納されます。なお、この境界は推奨のビューポートとは一致しない場合があります。(たとえば、厳密にはサンフランシスコにはファラロン諸島が市の一部として含まれますが、ビューポートでそのように返されることはありません)。
  • plus_codeOpen Location CodePlus Code を参照)はエンコードされた場所の参照情報です。緯度 / 経度の座標から取得され、8000 分の 1 x 8000 分の 1(14 メートル x 14 メートル)以下の領域を表します。Plus Codes は、住所がない場所(建物に番号が付いていない場所や、通りに名前がない場所)で、番地の代わりに使用できます。API がプラスコードを返すとは限りません。

    サービスが Plus Code を返す場合、その形式はグローバル コードと複合コードになります。

    • global_code は、4 文字の市外局番と 6 文字以上のローカルコード(849VCWC8+R9)です。
    • compound_code は、明示的な場所(CWC8+R9, Mountain View, CA, USA)を含む 6 文字以上のローカルコードです。このコンテンツをプログラムで解析しないでください。
    利用可能な場合は、API はグローバル コードと複合コードの両方を返します。ただし、検索結果が遠隔地(海や砂漠など)にある場合は、返されるのはグローバル コードのみです。
  • partial_match は、ジオコーダによって、元のリクエストに完全一致する住所は見つからなかったものの、部分一致する住所は見つかったことを示します。元のリクエストで住所の表記が間違っていたり、不完全である可能性があります。

    多くの場合、リクエストで渡された地域に番地が存在しないために部分一致が発生します。また、同じ地域内に複数の場所があるリクエストを行った場合も部分一致が返されます。たとえば、「Hillpar St, Bristol, UK」の場合は、Henry Street と Henrietta Street の両方の部分一致が返されます。リクエストに表記が間違った住所コンポーネントが含まれている場合、ジオコーディング サービスが別の住所を提示することもある点に注意してください。この場合も、部分一致として結果が返されます。

  • place_id は、他の Google API で使用できる一意の識別子です。たとえば、Places API リクエストで place_id を使用すると、電話番号や営業時間、ユーザーのレビューなど、ローカル ビジネスの詳細情報を取得できます。プレイス ID の概要をご覧ください。
ジオコーディング レスポンスの navigation_points フィールドには、場所へのナビゲーションに役立つポイントのリストが含まれています。具体的には、場所からまたは場所への道路ネットワークでルーティングする場合は、始点または終点として使用する必要があります。各ナビゲーション ポイントには次の値が含まれます。
  • location には、ナビゲーション ポイントの緯度と経度の値が含まれます。この場所は常に道路網に非常に近く、場所との間のナビゲーションの出発地または目的地として最適です。ポイントは道路の中心線から意図的に少しずらして配置し、場所が道路のどちら側にあるかを明確に示しています。
  • restricted_travel_modes は、ナビゲーション ポイントからアクセスできない移動手段のリストです。
    • "DRIVE" は、車でのルートに該当する交通手段です。
    • "WALK" は、徒歩経路に対応する移動モードです。

住所のタイプと住所コンポーネントのタイプ

結果の types[] 配列は、住所タイプを示します。住所タイプには、国、地方自治体、番地などがあります。address_components[] には types[] 配列も含まれています。これは、住所の各パートのタイプを示しています。たとえば、国や番地などです。(以下にタイプの全項目のリストを示します)。住所には、複数のタイプがある場合があります。タイプは「タグ」のようなもので、たとえば、多くの都市には political タイプと locality タイプのタグが付けられています。

住所のタイプと住所コンポーネントのタイプの配列で、ジオコーダがサポートし、返すタイプは以下のとおりです。

  • street_address は正確な住所を示します。
  • route は名前のある道路(US 101 など)を示します。
  • intersection は、主要交差点(通常は 2 つの大通りの交差点)を示します。
  • political は行政区画を示します。通常、このタイプは行政区画のポリゴンを示します。
  • country は国レベルの行政区画を示し、一般的にはジオコーダから返される最上位のタイプです。
  • administrative_area_level_1 は国レベルの下の 1 次的な行政区画を示します。米国の場合、州がこの行政区画レベルに相当しますが、すべての国でこの行政区画レベルが存在するわけではありません。多くの場合、administrative_area_level_1 の省略名は下位区分 ISO 3166-2 とその他の一般的なリストに一致します。ただし、Google のジオコーディングの結果はさまざまな信号と位置情報データに基づいているため、これらの名前が厳密に一致するとは限りません。
  • administrative_area_level_2 は国レベルの下の 2 次的な行政区画を示します。米国の場合、郡がこの行政区画レベルに相当しますが、すべての国でこの行政区画レベルが存在するわけではありません。
  • administrative_area_level_3 は国レベルの下の 3 次的な行政区画を示します。このタイプは小規模な行政区域を示します。 すべての国でこの行政区画レベルが存在するわけではありません。
  • administrative_area_level_4 は国レベルより下位の 4 次の行政区画を示します。このタイプは小規模な行政区域を示します。 すべての国でこの行政区画レベルが存在するわけではありません。
  • administrative_area_level_5 は国レベルの 5 次以下の行政区画を示します。このタイプは小規模な行政区域を示します。 すべての国でこの行政区画レベルが存在するわけではありません。
  • administrative_area_level_6 は国レベルの 6 次以下の行政区画を示します。このタイプは小規模な行政区域を示します。すべての国でこの行政区画レベルが存在するわけではありません。
  • administrative_area_level_7 は国レベルの 7 次以下の行政区画を示します。このタイプは小規模な行政区域を示します。すべての国でこの行政区画レベルが存在するわけではありません。
  • colloquial_area は一般的に使用されている通称を示します。
  • locality は行政区画である都市または町を示します。
  • sublocality は locality の下の 1 次的な行政区画を示します。一部の場所では、sublocality_level_1sublocality_level_5 のいずれかの追加タイプを受け取ります。各下位地区レベルは行政区画で、数が大きいほど区域は小さくなります。
  • neighborhood は名前のある地域を示します。
  • premise は名前のある場所を示します。通常は共通の名前を持つ建物や建物の集合体です。
  • subpremise は、敷地レベルより下位のアドレス指定可能なエンティティ(アパート、ユニット、スイートなど)を示します。
  • plus_code はエンコードされた場所の参照情報を示します。緯度と経度に基づきます。Plus Codes は、番地がない場所(建物に番号が付いていない場所や、通りに名前がない場所)で、番地の代わりに使用できます。詳しくは https://plus.codes をご覧ください。
  • postal_code は対象の国内で郵便物の宛先として使用される郵便番号を示します。
  • natural_feature は特徴的な地勢を示します。
  • airport は空港を示します。
  • park は名前付きの公園を示します。
  • point_of_interest は名前のあるスポットを示します。通常、これらの「スポット」は、その地域で有名な場所のことを指し、「エンパイア ステートビル」や「エッフェル塔」など、他のカテゴリにはあまり当てはまらないものです。

タイプリストが空の場合は、特定の住所コンポーネントに対して既知のタイプが存在しないことを意味します。たとえば、フランスのリュディがこれに相当します。

上記の他に、住所コンポーネントには以下のタイプが含まれることがあります。このリストはすべてを網羅するものではなく、今後変更される可能性もあります。

  • floor は建物の階数を示します。
  • establishment は通常、まだ分類されていない場所を示します。
  • landmark は、ナビゲーションを支援するために参照として使用される付近の場所を示します。
  • point_of_interest は名前のあるスポットを示します。
  • parking は、駐車場や立体駐車場を示します。
  • post_box は特定の郵便ポストを示します。
  • postal_town は、localitysublocality など、一部の国で郵送先住所に使用される地域グループを示します。
  • room は建物の部屋を示します。
  • street_number は正確な番地を示します。
  • bus_stationtrain_stationtransit_station は、バス、電車、または公共交通機関の停留所の場所を示します。

ビューポートのバイアス

ジオコーディング リクエストで、ジオコーディング サービスに(境界ボックスとして表現される)特定のビューポート内の結果を優先するように指示することもできます。そのためには、リクエスト URL で bounds パラメータを設定します。

bounds パラメータでは、パイプ(|)を区切り文字として、境界ボックスの南西と北東の角の緯度と経度の座標を定義します。

たとえば、「Washington」のジオコードでは通常、米国のワシントン州が返されます。

リクエスト:

https://maps.googleapis.com/maps/api/geocode/json?address=Washington&key=YOUR_API_KEY

対応:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Washington",
               "short_name" : "WA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Washington, USA",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 49.0024442,
                  "lng" : -116.91558
               },
               "southwest" : {
                  "lat" : 45.543541,
                  "lng" : -124.8489739
               }
            },
            "location" : {
               "lat" : 47.7510741,
               "lng" : -120.7401385
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 49.0024442,
                  "lng" : -116.91558
               },
               "southwest" : {
                  "lat" : 45.543541,
                  "lng" : -124.8489739
               }
            }
         },
         "place_id" : "ChIJ-bDD5__lhVQRuvNfbGh4QpQ",
         "types" : [ "administrative_area_level_1", "political" ]
      }
   ],
   "status" : "OK"
}

ただし、米国の北東部を囲むように境界ボックスを定義する bounds 引数を追加すると、このジオコーディングの結果としてワシントン D.C. の都市が返されます。

リクエスト:

https://maps.googleapis.com/maps/api/geocode/json?address=Washington&bounds=36.47,-84.72%7C43.39,-65.90&key=YOUR_API_KEY

対応:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Washington",
               "short_name" : "Washington",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "District of Columbia",
               "short_name" : "District of Columbia",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "District of Columbia",
               "short_name" : "DC",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Washington, DC, USA",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 38.9958641,
                  "lng" : -76.90939299999999
               },
               "southwest" : {
                  "lat" : 38.7916449,
                  "lng" : -77.119759
               }
            },
            "location" : {
               "lat" : 38.9071923,
               "lng" : -77.03687069999999
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 38.9958641,
                  "lng" : -76.90939299999999
               },
               "southwest" : {
                  "lat" : 38.7916449,
                  "lng" : -77.119759
               }
            }
         },
         "place_id" : "ChIJW-T2Wt7Gt4kRKl2I1CJFUsI",
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}

地域のバイアス

ジオコーディング リクエストで、region パラメータを使用して、ジオコーディング サービスが特定の地域を優先して結果を返すように指示できます。このパラメータには、地域のバイアスを指定する ccTLD(国コード トップレベル ドメイン)引数を渡します。ccTLD コードのほとんどは ISO 3166-1 コードと同一ですが、いくつか注意が必要な例外もあります。たとえば、英国の ccTLD は「uk」(.co.uk)ですが、その ISO 3166-1 コードは「gb」(厳密には「United Kingdom of Great Britain and Northern Ireland」のエンティティ)です。

ジオコーディングの結果は、Google マップのメイン アプリケーションを起動している公式のドメインごとに異なる可能性があります。なお、バイアスで優先されるのは特定のドメイン内の結果のみです。このドメインの外により関連性の高い結果がある場合はそれらも含まれます。

たとえば、「Toledo」をジオコーディングすると、Geocoding API のデフォルトのドメインが「United States」に設定されているため、次のような結果が返されます。リクエスト:

https://maps.googleapis.com/maps/api/geocode/json?address=Toledo&key=YOUR_API_KEY

対応:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Toledo",
               "short_name" : "Toledo",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Lucas County",
               "short_name" : "Lucas County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Ohio",
               "short_name" : "OH",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Toledo, OH, USA",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 41.732844,
                  "lng" : -83.454229
               },
               "southwest" : {
                  "lat" : 41.580266,
                  "lng" : -83.69423700000002
               }
            },
            "location" : {
               "lat" : 41.6639383,
               "lng" : -83.55521200000001
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 41.732844,
                  "lng" : -83.454229
               },
               "southwest" : {
                  "lat" : 41.580266,
                  "lng" : -83.69423700000002
               }
            }
         },
         "place_id" : "ChIJeU4e_C2HO4gRRcM6RZ_IPHw",
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}

region=es(スペイン)を指定した「Toledo」のジオコーディング リクエストは、スペインの都市を返します。

リクエスト:

https://maps.googleapis.com/maps/api/geocode/json?address=Toledo&region=es&key=YOUR_API_KEY

対応:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Toledo",
               "short_name" : "Toledo",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Toledo",
               "short_name" : "TO",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Castile-La Mancha",
               "short_name" : "CM",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Spain",
               "short_name" : "ES",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Toledo, Spain",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 39.88605099999999,
                  "lng" : -3.9192423
               },
               "southwest" : {
                  "lat" : 39.8383676,
                  "lng" : -4.0796176
               }
            },
            "location" : {
               "lat" : 39.8628316,
               "lng" : -4.027323099999999
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 39.88605099999999,
                  "lng" : -3.9192423
               },
               "southwest" : {
                  "lat" : 39.8383676,
                  "lng" : -4.0796176
               }
            }
         },
         "place_id" : "ChIJ8f21C60Lag0R_q11auhbf8Y",
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}

コンポーネントのフィルタリング

Geocoding API は、ジオコーディングのレスポンスにおいて、特定のエリアに制限された住所の結果を返すことができます。制限は components フィルタを使用して指定できます。フィルタは、パイプ(|)で区切った component:value ペアのリストです。フィルタの値は、スペル訂正や部分一致など、他のジオコーディングのリクエストと同じメソッドをサポートしています。ジオコーダがコンポーネント フィルタと部分一致する結果を見つけた場合、レスポンスに partial_match フィールドが含まれます。

フィルタできる components には、次のものがあります。

  • postal_codepostal_codepostal_code_prefix と一致します。
  • country は、国名、または 2 文字の ISO 3166-1 国コードを照合します。この API は ISO 標準に従って国を定義しているため、対応する ISO 国コードを使用するとフィルタリングが最適に動作します。

次の components は結果に影響を与えるために使用できますが、適用されることはありません。

  • route は、道路の正式名または略称を照合します。
  • locality は、locality タイプと sublocality タイプで照合します。
  • administrative_area は、すべての administrative_area レベルを照合します。

コンポーネントのフィルタリングに関する注意事項:

  • リクエストでこれらのコンポーネント フィルタを繰り返さないでください。繰り返すと、API は Invalid_request: countrypostal_coderoute を返します。
  • リクエストに重複するコンポーネント フィルタが含まれている場合、API はこれらのフィルタを OR ではなく AND として評価します。
  • 結果は Google マップと一致しますが、予期しない ZERO_RESULTS レスポンスが返されることがあります。ユースケースによっては、Place Autocomplete を使用するとより良い結果が得られる場合があります。詳しくは、こちらのよくある質問をご覧ください。
  • 住所コンポーネントごとに、address パラメータまたは components フィルタのいずれかで指定します。両方には指定できません。両方に同じ値を指定すると、ZERO_RESULTS になることがあります。

components=country:GB を指定して「High St, Hastings」をジオコーディングすると、米国の Hastings-On-Hudson ではなく、英国の Hastings が返されます。

リクエスト:

https://maps.googleapis.com/maps/api/geocode/json?address=high+st+hasting&components=country:GB&key=YOUR_API_KEY

対応:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "High Street",
               "short_name" : "High St",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Hastings",
               "short_name" : "Hastings",
               "types" : [ "postal_town" ]
            },
            {
               "long_name" : "East Sussex",
               "short_name" : "East Sussex",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "England",
               "short_name" : "England",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United Kingdom",
               "short_name" : "GB",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "TN34 3EY",
               "short_name" : "TN34 3EY",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "High St, Hastings TN34 3EY, UK",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 50.8601041,
                  "lng" : 0.5957329
               },
               "southwest" : {
                  "lat" : 50.8559061,
                  "lng" : 0.5906163
               }
            },
            "location" : {
               "lat" : 50.85830319999999,
               "lng" : 0.5924594
            },
            "location_type" : "GEOMETRIC_CENTER",
            "viewport" : {
               "northeast" : {
                  "lat" : 50.8601041,
                  "lng" : 0.5957329
               },
               "southwest" : {
                  "lat" : 50.8559061,
                  "lng" : 0.5906163
               }
            }
         },
         "partial_match" : true,
         "place_id" : "ChIJ-Ws929sa30cRKgsMNVkPyws",
         "types" : [ "route" ]
      }
   ],
   "status" : "OK"
}

components=country:ES を指定して「Santa Cruz」の地区のジオコーディング リクエストを実行すると、スペイン領カナリア諸島のサンタ・クルス・デ・テネリフェ島が返されます。

リクエスト:

https://maps.googleapis.com/maps/api/geocode/json?components=locality:santa+cruz|country:ES&key=YOUR_API_KEY

対応:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Santa Cruz de Tenerife",
               "short_name" : "Santa Cruz de Tenerife",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Cruz de Tenerife",
               "short_name" : "TF",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Canary Islands",
               "short_name" : "CN",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Spain",
               "short_name" : "ES",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Santa Cruz de Tenerife, Spain",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 28.487616,
                  "lng" : -16.2356646
               },
               "southwest" : {
                  "lat" : 28.4280248,
                  "lng" : -16.3370045
               }
            },
            "location" : {
               "lat" : 28.4636296,
               "lng" : -16.2518467
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 28.487616,
                  "lng" : -16.2356646
               },
               "southwest" : {
                  "lat" : 28.4280248,
                  "lng" : -16.3370045
               }
            }
         },
         "place_id" : "ChIJcUElzOzMQQwRLuV30nMUEUM",
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}

コンポーネント フィルタリングで ZERO_RESULTS レスポンスが返されるのは、相反するフィルタを指定した場合のみです。

リクエスト:

https://maps.googleapis.com/maps/api/geocode/json?components=administrative_area:TX|country:FR&key=YOUR_API_KEY

対応:

{
   "results" : [],
   "status" : "ZERO_RESULTS"
}

components フィルタを使用すると、address パラメータなしで有効なクエリを実行できます。(完全な住所をジオコーディングする場合、リクエストに建物の名称と番号が含まれている場合は、address パラメータが必要です)。

リクエスト:

https://maps.googleapis.com/maps/api/geocode/json?components=route:Annankatu|administrative_area:Helsinki|country:Finland&key=YOUR_API_KEY

対応:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Annankatu",
               "short_name" : "Annankatu",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Helsinki",
               "short_name" : "HKI",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Finland",
               "short_name" : "FI",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "00101",
               "short_name" : "00101",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "Annankatu, 00101 Helsinki, Finland",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 60.168997,
                  "lng" : 24.9433353
               },
               "southwest" : {
                  "lat" : 60.16226160000001,
                  "lng" : 24.9332897
               }
            },
            "location" : {
               "lat" : 60.1657808,
               "lng" : 24.938451
            },
            "location_type" : "GEOMETRIC_CENTER",
            "viewport" : {
               "northeast" : {
                  "lat" : 60.168997,
                  "lng" : 24.9433353
               },
               "southwest" : {
                  "lat" : 60.16226160000001,
                  "lng" : 24.9332897
               }
            }
         },
         "place_id" : "ChIJARW7C8sLkkYRgl4je4-RPUM",
         "types" : [ "route" ]
      }
   ],
   "status" : "OK"
}