Nearby Search(新規)

プラットフォームを選択: Android iOS JavaScript ウェブサービス

Nearby Search(新版)リクエストは、1 つ以上の場所タイプを受け取り、指定されたエリア内の一致する場所のリストを返します。1 つ以上のデータ型を指定する項目マスクが必要です。周辺検索(新規)では POST リクエストのみがサポートされます。

API Explorer では、ライブ リクエストを実行して、API と API オプションを把握できます。

インタラクティブなデモで、周辺検索(新)の結果を地図に表示してみます。

Nearby Search(新規)リクエスト

周辺検索(新規)リクエストは、次の形式の URL に対する HTTP POST リクエストです。

https://places.googleapis.com/v1/places:searchNearby

すべてのパラメータを JSON リクエスト本文またはヘッダーで POST リクエストの一部として渡します。次に例を示します。

curl -X POST -d '{
  "includedTypes": ["restaurant"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965},
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName" \
https://places.googleapis.com/v1/places:searchNearby

Nearby Search(新規)レスポンス

近くの検索(新規)は、 レスポンスとして JSON オブジェクトを返します。レスポンスの説明:

  • places 配列には、一致するすべての場所が含まれます。
  • 配列内の各場所は、Place オブジェクトで表されます。Place オブジェクトには、単一の場所に関する詳細情報が含まれます。
  • リクエストで渡された FieldMask には、Place オブジェクトで返されるフィールドのリストを指定します。

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

{
  "places": [
    {
      object (Place)
    }
  ]
}

必須パラメータ

  • FieldMask

    レスポンス フィールド マスクを作成して、レスポンスで返すフィールドのリストを指定します。URL パラメータ $fields または fields を使用するか、HTTP ヘッダー X-Goog-FieldMask を使用して、レスポンス フィールド マスクをメソッドに渡します。レスポンスで返されるフィールドのデフォルト リストはありません。フィールドマスクを省略すると、メソッドからエラーが返されます。

    フィールド マスキングは、不要なデータをリクエストしないようにするための優れた設計手法です。これにより、不要な処理時間と課金が発生するのを防ぐことができます。

    返すプレイスデータの種類をカンマ区切りで指定します。たとえば、場所の表示名と住所を取得します。

    X-Goog-FieldMask: places.displayName,places.formattedAddress

    すべてのフィールドを取得するには、* を使用します。

    X-Goog-FieldMask: *
    ワイルドカード「*」はすべてのフィールドを選択します。

    次のフィールドを 1 つ以上指定します。

    • 次のフィールドは、Nearby Search Pro SKU をトリガーします。

      places.accessibilityOptions
      places.addressComponents
      places.addressDescriptor*
      places.adrFormatAddress
      places.attributions
      places.businessStatus
      places.containingPlaces
      places.displayName
      places.formattedAddress
      places.googleMapsLinks**
      places.googleMapsUri
      places.iconBackgroundColor
      places.iconMaskBaseUri
      places.id
      places.location
      places.name***
      places.photos
      places.plusCode
      places.postalAddress
      places.primaryType
      places.primaryTypeDisplayName
      places.pureServiceAreaBusiness
      places.shortFormattedAddress
      places.subDestinations
      places.types
      places.utcOffsetMinutes
      places.viewport

      * 住所記述子はインドのお客様を対象に一般提供されており、その他の地域では試験運用版です。

      ** places.googleMapsLinks フィールドは一般提供前のプレビュー ステージにあり、プレビュー期間中の使用料は請求されません(請求額は $0 です)。

      *** places.name フィールドには、places/PLACE_ID 形式の場所のリソース名を指定します。places.displayName を使用して、場所のテキスト名にアクセスします。

    • 次のフィールドは、Nearby Search Enterprise SKU をトリガーします。

      places.currentOpeningHours
      places.currentSecondaryOpeningHours
      places.internationalPhoneNumber
      places.nationalPhoneNumber
      places.priceLevel
      places.priceRange
      places.rating
      places.regularOpeningHours
      places.regularSecondaryOpeningHours
      places.userRatingCount
      places.websiteUri

    • 次のフィールドは、Nearby Search Enterprise + Atmosphere SKU をトリガーします。

      places.allowsDogs
      places.curbsidePickup
      places.delivery
      places.dineIn
      places.editorialSummary
      places.evChargeOptions
      places.fuelOptions
      places.goodForChildren
      places.goodForGroups
      places.goodForWatchingSports
      places.liveMusic
      places.menuForChildren
      places.parkingOptions
      places.paymentOptions
      places.outdoorSeating
      places.reservable
      places.restroom
      places.reviews
      places.routingSummaries*
      places.servesBeer
      places.servesBreakfast
      places.servesBrunch
      places.servesCocktails
      places.servesCoffee
      places.servesDessert
      places.servesDinner
      places.servesLunch
      places.servesVegetarianFood
      places.servesWine
      places.takeout

      * テキスト検索と周辺検索のみ

  • locationRestriction

    検索対象の領域を円として指定します。中心点と半径(メートル単位)で定義します。半径は 0.0 ~ 50000.0 の範囲で指定してください。デフォルトの半径は 0.0 です。リクエストで 0.0 より大きい値に設定する必要があります。

    次に例を示します。

    "locationRestriction": {
      "circle": {
        "center": {
          "latitude": 37.7937,
          "longitude": -122.3965
        },
        "radius": 500.0
      }
    }

オプション パラメータ

  • includedTypes/excludedTypes、includedPrimaryTypes/excludedPrimaryTypes

    検索結果のフィルタに使用するタイプ表 A のタイプから、タイプのリストを指定できます。各タイプの制限カテゴリで最大 50 個のタイプを指定できます。

    プレイスには、関連付けられている表 A のタイプから1 つのプライマリ タイプのみを指定できます。たとえば、プライマリ タイプは "mexican_restaurant" または "steak_house" です。includedPrimaryTypesexcludedPrimaryTypes を使用して、場所のメインタイプで結果をフィルタします。

    場所には、表 A のタイプから複数のタイプ値を関連付けることもできます。たとえば、レストランのタイプは "seafood_restaurant""restaurant""food""point_of_interest""establishment" のいずれかになります。includedTypesexcludedTypes を使用して、場所に関連付けられたタイプのリストで結果をフィルタします。

    "restaurant""hotel" などの一般的なプライマリ タイプを指定すると、指定したプライマリ タイプよりも具体的なプライマリ タイプの場所がレスポンスに含まれることがあります。たとえば、プライマリ タイプ "restaurant" を含めるように指定します。レスポンスには、"restaurant" をメインタイプとする場所が含まれますが、"chinese_restaurant""seafood_restaurant" など、より具体的なメインタイプを持つ場所も含まれます。

    複数の種類の制限を指定して検索すると、すべての制限を満たす場所のみが返されます。たとえば、{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]} を指定すると、返される場所は "restaurant" 関連のサービスを提供しますが、主に "steak_house" として機能しません。

    includedTypes

    検索する表 A の場所タイプのカンマ区切りのリスト。このパラメータを省略すると、すべてのタイプの場所が返されます。

    excludedTypes

    検索から除外する表 A のプレイスタイプのカンマ区切りのリスト。

    リクエストで includedTypes"school" など)と excludedTypes"primary_school" など)の両方を指定すると、"school" に分類される場所がレスポンスに含まれますが、"primary_school" に分類される場所は含まれません。レスポンスには、includedTypes少なくとも 1 つexcludedTypesいずれにも一致しない場所が含まれます。

    includedTypesexcludedTypes の両方に出現する型など、競合する型がある場合、INVALID_REQUEST エラーが返されます。

    includedPrimaryTypes

    検索に含める表 A のプライマリ プレイスタイプのカンマ区切りのリスト。

    excludedPrimaryTypes

    検索から除外する表 A のプライマリ プレイスタイプのカンマ区切りのリスト。

    includedPrimaryTypesexcludedPrimaryTypes の両方に表示されるタイプなど、競合するプライマリ タイプがある場合、INVALID_ARGUMENT エラーが返されます。

  • languageCode

    結果を返す言語。

    • サポートされている言語の一覧をご覧ください。サポート対象の言語は頻繁に更新されるため、このリストで網羅されていない場合があります。
    • languageCode が指定されていない場合、API はデフォルトで en になります。無効な言語コードを指定すると、API は INVALID_ARGUMENT エラーを返します。
    • API は、ユーザーと地元の人々が読み取りやすい住所を提供するよう努めています。この目的を達成するため、この API は、優先言語を考慮し、必要に応じてユーザーが読み取れる文字に変換した現地の言語で住所を返します。その他の住所は、優先言語で返されます。住所のコンポーネントはすべて、最初のコンポーネントから選択された同じ言語で返されます。
    • 優先言語で名前を表示できない場合、API は最も近い言語を使用します。
    • 優先言語は、API が返す結果のセットと、返される順序にわずかに影響します。ジオコーダは、道路の種類の略語や、ある言語では有効で別の言語では有効でない類義語など、略語を言語に応じて解釈します。
  • maxResultCount

    返される場所の結果の最大数を指定します。1 ~ 20(デフォルト)の値にする必要があります。

  • rankPreference

    使用するランキングのタイプ。このパラメータを省略すると、検索結果は人気度でランク付けされます。次のいずれかになります。

    • POPULARITY(デフォルト)人気度に基づいて結果を並べ替えます。
    • DISTANCE 指定された場所からの距離に応じて結果を昇順で並べ替えます。
  • regionCode

    レスポンスのフォーマットに使用される地域コード。 2 文字の CLDR コード値で指定します。デフォルト値はありません。

    レスポンスの formattedAddress フィールドの国名が regionCode と一致する場合、国コードは formattedAddress から省略されます。このパラメータは、国名が常に含まれる adrFormatAddress と、国名が含まれない shortFormattedAddress には影響しません。

    ほとんどの CLDR コードは ISO 3166-1 コードと同一ですが、いくつか注意が必要な例外もあります。たとえば、英国の ccTLD は「uk」(.co.uk)ですが、ISO 3166-1 コードは「gb」です(技術的には「英国(グレートブリテンおよび北アイルランド連合王国)」のエンティティ用)。このパラメータは、適用される法律に基づいて結果に影響する可能性があります。

Nearby Search(新規)の例

1 つの種類の場所を検索する

次の例は、circle で定義された半径 500 m 以内のすべてのレストランの名前を表示する Nearby Search(新規)リクエストを示しています。

curl -X POST -d '{
  "includedTypes": ["restaurant"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965},
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName" \
https://places.googleapis.com/v1/places:searchNearby

X-Goog-FieldMask ヘッダーは、レスポンスに places.displayName というデータフィールドが含まれていることを指定します。レスポンスの形式は次のようになります。

{
  "places": [
    {
      "displayName": {
        "text": "La Mar Cocina Peruana",
        "languageCode": "en"
      }
    },
    {
      "displayName": {
        "text": "Kokkari Estiatorio",
        "languageCode": "en"
      }
    },
    {
      "displayName": {
        "text": "Harborview Restaurant & Bar",
        "languageCode": "en"
      }
    },
...
}

フィールドマスクにデータ型を追加して、追加情報を返します。たとえば、places.formattedAddress,places.types,places.websiteUri を追加して、レストランの住所、タイプ、ウェブアドレスをレスポンスに含めます。

curl -X POST -d '{
  "includedTypes": ["restaurant"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965},
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName,places.formattedAddress,places.types,places.websiteUri" \
https://places.googleapis.com/v1/places:searchNearby

レスポンスの形式は次のようになります。

{
  "places": [
    {
      "types": [
        "seafood_restaurant",
        "restaurant",
        "food",
        "point_of_interest",
        "establishment"
      ],
      "formattedAddress": "PIER 1 1/2 The Embarcadero N, San Francisco, CA 94105, USA",
      "websiteUri": "http://lamarsf.com/",
      "displayName": {
        "text": "La Mar Cocina Peruana",
        "languageCode": "en"
      }
    },
    {
      "types": [
        "greek_restaurant",
        "meal_takeaway",
        "restaurant",
        "food",
        "point_of_interest",
        "establishment"
      ],
      "formattedAddress": "200 Jackson St, San Francisco, CA 94111, USA",
      "websiteUri": "https://kokkari.com/",
      "displayName": {
        "text": "Kokkari Estiatorio",
        "languageCode": "en"
      }
    },
...
}

複数の種類の場所を検索する

次の例は、指定された circle から半径 1,000 メートル以内のすべてのコンビニエンス ストアと酒屋の表示名を取得する「周辺検索(新規)」リクエストを示しています。

curl -X POST -d '{
  "includedTypes": ["liquor_store", "convenience_store"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 1000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName,places.primaryType,places.types" \
https://places.googleapis.com/v1/places:searchNearby
この例では、フィールドマスクに places.primaryTypeplaces.types を追加して、レスポンスに各場所のタイプ情報が含まれるようにします。これにより、結果から適切な場所を簡単に選択できます。

次の例は、"primary_school" タイプのすべての場所を除く、"school" タイプのすべての場所に対する Nearby Search(新版)リクエストを示しています。結果は距離でランク付けされます。

curl -X POST -d '{
  "includedTypes": ["school"],
  "excludedTypes": ["primary_school"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 1000.0
    }
  },
  "rankPreference": "DISTANCE"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName" \
https://places.googleapis.com/v1/places:searchNearby

地域の近くにあるすべての場所を検索し、距離でランク付けする

次の例は、サンフランシスコのダウンタウンの近くの場所を検索する「周辺検索(新規)」リクエストを示しています。この例では、rankPreference パラメータを含めて、距離で結果をランク付けします。

curl -X POST -d '{
  "maxResultCount": 10,
  "rankPreference": "DISTANCE",
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 1000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName" \
https://places.googleapis.com/v1/places:searchNearby

住所記述子を取得する

住所記述子には、近くのランドマークや含まれるエリアなど、場所の位置に関するリレーショナル情報が提供されます。

次の例は、サンノゼのショッピングモール付近の場所を検索する「周辺検索(新規)」リクエストを示しています。この例では、フィールドマスクに addressDescriptors を含めます。

curl -X POST -d '{
  "maxResultCount": 5,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.321328,
        "longitude": -121.946275
      },"radius": 1000
    }
  },
  "includedTypes": ["restaurant", "cafe"],
  "excludedTypes": [],
  "rankPreference":"POPULARITY"
}' \
-H 'Content-Type: application/json' \
-H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName,places.addressDescriptor" \
https://places.googleapis.com/v1/places:searchNearby

レスポンスには、リクエストで指定された場所、近くのランドマークのリストとその場所からの距離、エリアのリストとその場所との包含関係が含まれます。

  {
    "places": [
      {
        "displayName": {
          "text": "Westfield Valley Fair",
          "languageCode": "en"
        },
        "addressDescriptor": {
          "landmarks": [
            {
              "name": "places/ChIJ62_oCR7Lj4AR_MGWkSPotD4",
              "placeId": "ChIJ62_oCR7Lj4AR_MGWkSPotD4",
              "displayName": {
                "text": "Nordstrom",
                "languageCode": "en"
              },
              "types": [
                "clothing_store",
                "department_store",
                "establishment",
                "point_of_interest",
                "shoe_store",
                "store"
              ],
              "straightLineDistanceMeters": 114.76984,
              "travelDistanceMeters": 114.261856
            },
            {
              "name": "places/ChIJgexMlR_Lj4ARiKCKuhNnjn0",
              "placeId": "ChIJgexMlR_Lj4ARiKCKuhNnjn0",
              "displayName": {
                "text": "Valley Fair Mall Eyexam of CA",
                "languageCode": "en"
              },
              "types": [
                "establishment",
                "health",
                "point_of_interest"
              ],
              "straightLineDistanceMeters": 131.62566,
              "travelDistanceMeters": 237.33253
            },
            {
              "name": "places/ChIJWWIlNx7Lj4ARpe1E0ob-_GI",
              "placeId": "ChIJWWIlNx7Lj4ARpe1E0ob-_GI",
              "displayName": {
                "text": "Din Tai Fung",
                "languageCode": "en"
              },
              "types": [
                "establishment",
                "food",
                "point_of_interest",
                "restaurant"
              ],
              "straightLineDistanceMeters": 110.0775,
              "travelDistanceMeters": 171.41951
            },
            {
              "name": "places/ChIJwyfPQx7Lj4AR7bYI2A2Yc54",
              "placeId": "ChIJwyfPQx7Lj4AR7bYI2A2Yc54",
              "displayName": {
                "text": "Abercrombie & Fitch",
                "languageCode": "en"
              },
              "types": [
                "clothing_store",
                "establishment",
                "point_of_interest",
                "shoe_store",
                "store"
              ],
              "spatialRelationship": "DOWN_THE_ROAD",
              "straightLineDistanceMeters": 53.620117,
              "travelDistanceMeters": 2.4578214
            },
            {
              "name": "places/ChIJpycNQx7Lj4ARjhXw3PrM_kU",
              "placeId": "ChIJpycNQx7Lj4ARjhXw3PrM_kU",
              "displayName": {
                "text": "Hollister Co.",
                "languageCode": "en"
              },
              "types": [
                "clothing_store",
                "establishment",
                "point_of_interest",
                "shoe_store",
                "store"
              ],
              "spatialRelationship": "DOWN_THE_ROAD",
              "straightLineDistanceMeters": 56.53726,
              "travelDistanceMeters": 15.418246
            }
          ],
          "areas": [
            {
              "name": "places/ChIJb3F-EB7Lj4ARnHApQ_Hu1gI",
              "placeId": "ChIJb3F-EB7Lj4ARnHApQ_Hu1gI",
              "displayName": {
                "text": "Westfield Valley Fair",
                "languageCode": "en"
              },
              "containment": "WITHIN"
            },
            {
              "name": "places/ChIJXYuykB_Lj4AR1Ot8nU5q26Q",
              "placeId": "ChIJXYuykB_Lj4AR1Ot8nU5q26Q",
              "displayName": {
                "text": "Valley Fair",
                "languageCode": "en"
              },
              "containment": "WITHIN"
            },
            {
              "name": "places/ChIJtYoUX2DLj4ARKoKOb1G0CpM",
              "placeId": "ChIJtYoUX2DLj4ARKoKOb1G0CpM",
              "displayName": {
                "text": "Central San Jose",
                "languageCode": "en"
              },
              "containment": "OUTSKIRTS"
            }
          ]
        }
      },
  /.../
  }

試してみよう:

API Explorer では、サンプル リクエストを実行して、API と API オプションを把握できます。

  1. ページの右側にある API アイコン api を選択します。

  2. 必要に応じて、リクエスト パラメータを編集します。

  3. [Execute] ボタンを選択します。ダイアログで、リクエストに使用するアカウントを選択します。

  4. API Explorer パネルで、全画面アイコン fullscreen を選択して API Explorer ウィンドウを開きます。