Nearby Search(新版)リクエストは、検索する領域を入力として受け取り、円として指定され、円の中心点の緯度と経度の座標とメートル単位の半径で定義されます。このリクエストは、指定された検索領域内で一致する場所のリストを返します。各場所は Place
オブジェクトで表されます。
デフォルトでは、レスポンスには検索領域内のすべてのタイプの場所が含まれます。オプションで、レスポンスに含める、またはレスポンスから除外する場所タイプのリストを指定することで、レスポンスをフィルタリングできます。たとえば、「レストラン」、「ベーカリー」、「カフェ」タイプの場所のみをレスポンスに含めることや、「学校」タイプの場所をすべて除外するように指定できます。
Nearby Search(新版)リクエスト
Nearby Search(新版)リクエストを作成するには、PlacesClient.searchNearby
を呼び出して、リクエスト パラメータを定義する SearchNearbyRequest
オブジェクトを渡します。
SearchNearbyRequest
オブジェクトは、リクエストの必須パラメータと省略可能なパラメータをすべて指定します。必須パラメータは次のとおりです。
Place
オブジェクトで返すフィールドのリスト。フィールド マスクとも呼ばれます。フィールド リストで 1 つ以上のフィールドを指定しない場合、またはフィールド リストを省略すると、呼び出しからエラーが返されます。- 検索範囲の位置情報の制限。緯度と経度のペアと半径値(メートル単位)で定義されます。
この付近の検索リクエストの例では、レスポンスの Place
オブジェクトに、検索結果の Place
オブジェクトごとにプレイス フィールド Place.Field.ID
と Place.Field.NAME
が含まれることを指定しています。また、レスポンスをフィルタリングして、タイプ「restaurant」と「cafe」の場所のみを返し、「ピザ_restaurant」と「american_restaurant」タイプの場所は除外します。
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the search area as a 1000 meter diameter circle in New York, NY. LatLng center = new LatLng(40.7580, -73.9855); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000); // Define a list of types to include. final List<String> includedTypes = Arrays.asList("restaurant", "cafe"); // Define a list of types to exclude. final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant"); // Use the builder to create a SearchNearbyRequest object. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setExcludedTypes(excludedTypes) .setMaxResultCount(10) .build()); // Call placesClient.searchNearby() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
Nearby Search(新版)の回答
SearchNearbyResponse
クラスは、検索リクエストからのレスポンスを表します。SearchNearbyResponse
オブジェクトには次のものが含まれます。
- 一致するすべての場所を表す
Place
オブジェクトのリスト。一致する場所ごとに 1 つのPlace
オブジェクトが含まれます。 - 各
Place
オブジェクトには、リクエストで渡されたフィールド リストで定義されたフィールドのみが含まれます。
たとえば、このリクエストではフィールド リストを次のように定義しました。
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
このフィールド リストは、レスポンスの各 Place
オブジェクトには、一致する各場所のプレイス ID と名前のみが含まれることを意味します。その後、Place.getId()
メソッドと Place.getName()
メソッドを使用して、各 Place
オブジェクトでこれらのフィールドにアクセスできます。
Place
オブジェクトのデータにアクセスするその他の例については、場所オブジェクトのデータ フィールドにアクセスするをご覧ください。
必須パラメータ
SearchNearbyRequest
オブジェクトを使用して、検索の必須パラメータを指定します。
フィールド リスト
Place Details をリクエストする場合は、その場所の
Place
オブジェクトにフィールド マスクとして返すデータを指定する必要があります。フィールド マスクを定義するには、Place.Field
の値の配列をSearchNearbyRequest
オブジェクトに渡します。フィールド マスキングは、不要なデータをリクエストしないようにするための優れた設計プラクティスです。これにより、不要な処理時間と課金を回避できます。次のフィールドを 1 つ以上指定します。
次のフィールドによって Nearby Search(Basic)SKU がトリガーされます。
Place.Field.ADDRESS_COMPONENTS
、Place.Field.BUSINESS_STATUS
、Place.Field.ADDRESS
、Place.Field.ICON_BACKGROUND_COLOR
、Place.Field.ICON_URL
、Place.Field.LAT_LNG
、Place.Field.PHOTO_METADATAS
、Place.Field.PLUS_CODE
、Place.Field.ID
、Place.Field.NAME
、Place.Field.TYPES
、Place.Field.UTC_OFFSET
、Place.Field.VIEWPORT
、Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
次のフィールドによって Nearby Search(Advanced)SKU がトリガーされます。
Place.Field.CURRENT_OPENING_HOURS
、Place.Field.SECONDARY_OPENING_HOURS
、Place.Field.PHONE_NUMBER
、Place.Field.PRICE_LEVEL
、Place.Field.RATING
、Place.Field.OPENING_HOURS
、Place.Field.USER_RATINGS_TOTAL
、Place.Field.WEBSITE_URI
次のフィールドによって Nearby Search(Preferred)SKU がトリガーされます。
Place.Field.CURBSIDE_PICKUP
、Place.Field.DELIVERY
、Place.Field.DINE_IN
、Place.Field.EDITORIAL_SUMMARY
、Place.Field.RESERVABLE
、Place.Field.REVIEWS
、Place.Field.SERVES_BEER
、Place.Field.SERVES_BREAKFAST
、Place.Field.SERVES_BRUNCH
、Place.Field.SERVES_DINNER
、Place.Field.SERVES_LUNCH
、Place.Field.SERVES_VEGETARIAN_FOOD
、Place.Field.SERVES_WINE
、Place.Field.TAKEOUT
フィールド リスト パラメータを設定するには、
SearchNearbyRequest
オブジェクトの作成時にsetPlaceFields()
メソッドを呼び出します。次の例では、2 つのフィールド値のリストを定義して、リクエストによって返される
Place
オブジェクトにPlace.Field.ID
フィールドとPlace.Field.NAME
フィールドが含まれることを指定します。
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
地域の制限
検索する地域を円として定義した
LocationRestriction
オブジェクト。中心点と半径(メートル単位)で定義します。半径は 0.0 より大きく 50, 000.0 以下にする必要があります。小さすぎる半径を指定すると、レスポンスとしてZERO_RESULTS
が返されます。ロケーション制限パラメータを設定するには、
SearchNearbyRequest
オブジェクトの作成時にsetLocationRestriction()
メソッドを呼び出します。
オプション パラメータ
SearchNearbyRequest
オブジェクトを使用して、検索のオプション パラメータを指定します。
-
タイプとプライマリ タイプ
検索結果のフィルタリングに使用する Table A タイプのリストを指定できます。各タイプ制限のカテゴリで最大 50 個のタイプを指定できます。
場所には、関連付けられているタイプ Table A から 1 つのプライマリ タイプのみを指定できます。たとえば、プライマリ タイプは
"mexican_restaurant"
や"steak_house"
です。includedPrimaryTypes
とexcludedPrimaryTypes
を使用すると、場所のメインタイプに基づいて結果をフィルタリングできます。場所には、関連するタイプの Table A の複数のタイプ値を含めることもできます。たとえば、レストランのタイプは
"seafood_restaurant"
、"restaurant"
、"food"
、"point_of_interest"
、"establishment"
です。includedTypes
とexcludedTypes
を使用して、場所に関連付けられたタイプのリストの結果をフィルタリングします。複数のタイプ制限を指定して検索を指定した場合は、すべての制限を満たす場所のみが返されます。たとえば、
includedTypes = Arrays.asList("restaurant")
とexcludedPrimaryTypes = Arrays.asList("steak_house")
を指定した場合、返される場所は"restaurant"
関連のサービスを提供しますが、主に"steak_house"
として動作するわけではありません。includedTypes
とexcludedTypes
の使用例については、Nearby Search(新版)リクエストをご覧ください。含まれるタイプ
Table A から検索する場所タイプのリスト。 このパラメータを省略すると、すべてのタイプの場所が返されます。
含まれるタイプ パラメータを設定するには、
SearchNearbyRequest
オブジェクトの作成時にsetIncludedTypes()
メソッドを呼び出します。除外されたタイプ
検索から除外する Table A の場所タイプのリスト。
リクエストで
includedTypes
("school"
など)とexcludedTypes
("primary_school"
など)の両方を指定した場合、レスポンスには、"school"
に分類されるが"primary_school"
には分類されない場所が含まれます。レスポンスには、includedTypes
の少なくとも 1 つに一致し、excludedTypes
のいずれにも一致しない場所が含まれます。includedTypes
とexcludedTypes
の両方に指定されているタイプなど、競合するタイプがある場合は、INVALID_REQUEST
エラーが返されます。除外タイプのパラメータを設定するには、
SearchNearbyRequest
オブジェクトの作成時にsetExcludedTypes()
メソッドを呼び出します。含まれるプライマリ タイプ
検索に含める、テーブル A の主要な場所タイプのリスト。
組み込まれるプライマリ タイプのパラメータを設定するには、
SearchNearbyRequest
オブジェクトの作成時にsetIncludedPrimaryTypes()
メソッドを呼び出します。除外するメインのタイプ
検索から除外する Table A の主要な場所タイプのリスト。
includedPrimaryTypes
とexcludedPrimaryTypes
の両方に存在するタイプなど、競合するプライマリ タイプが存在する場合は、INVALID_ARGUMENT
エラーが返されます。除外されるプライマリ タイプのパラメータを設定するには、
SearchNearbyRequest
オブジェクトの作成時にsetExcludedPrimaryTypes()
メソッドを呼び出します。 -
結果の最大数
返されるプレイス結果の最大数を指定します。1 ~ 20(デフォルト)の値にする必要があります。
最大結果数パラメータを設定するには、
SearchNearbyRequest
オブジェクトの作成時にsetMaxResultCount()
メソッドを呼び出します。 -
ランク付けの設定
使用するランキングのタイプ。このパラメータを省略すると、結果は人気順でランク付けされます。次のいずれかになります。
POPULARITY
(デフォルト)人気度に基づいて検索結果を並べ替えます。DISTANCE
指定された場所からの距離に基づいて、結果を昇順で並べ替えます。
ランク設定パラメータを設定するには、
SearchNearbyRequest
オブジェクトの作成時にsetRankPreference()
メソッドを呼び出します。 -
地域コード
レスポンスのフォーマットに使用されるリージョン コード。 2 文字の CLDR コード値として指定します。デフォルト値はありません。
レスポンスの
formattedAddress
フィールドの国名がregionCode
と一致する場合、国コードはformattedAddress
から省略されます。ほとんどの CLDR コードは ISO 3166-1 コードと同一ですが、いくつか注意すべき例外があります。たとえば、英国の ccTLD は「uk」(.co.uk)ですが、ISO 3166-1 コードは「gb」(厳密には「グレート ブリテンおよび北アイルランド連合王国」のエンティティ)です。このパラメータは、適用される法律に基づき、結果に影響する場合があります。
地域コード パラメータを設定するには、
SearchNearbyRequest
オブジェクトの作成時にsetRegionCode()
メソッドを呼び出します。
アプリに属性を表示する
アプリが PlacesClient
から取得した情報(写真やレビューなど)を表示する場合、必要な帰属情報も表示する必要があります。
詳しくは、Places SDK for Android のポリシーをご覧ください。