Nearby Search(New)リクエストでは、検索対象の領域を入力として受け取ります。この円は、円の中心点の緯度と経度の座標、およびメートル単位の半径で定義されます。このリクエストは、指定された検索領域内で、それぞれが GMSPlace
オブジェクトで表される、一致する場所のリストを返します。
デフォルトでは、レスポンスには検索エリア内のすべてのタイプの場所が含まれます。必要に応じて、場所タイプのリストを指定してレスポンスをフィルタし、レスポンスに明示的に含める、またはレスポンスから除外することもできます。たとえば、「レストラン」、「パン屋」、「カフェ」タイプの場所のみをレスポンスに含めたり、「学校」タイプの場所をすべて除外したりするように指定できます。
Nearby Search(新規)リクエスト
GMSPlacesClient searchNearbyWithRequest:
を呼び出して Nearby Search リクエストを作成し、リクエスト パラメータを定義する GMSPlaceSearchNearbyRequest
オブジェクトと、レスポンスを処理する GMSPlaceSearchNearbyResultCallback
タイプのコールバック メソッドを渡します。
GMSPlaceSearchNearbyRequest
オブジェクトは、リクエストのすべての必須パラメータとオプション パラメータを指定します。必須パラメータは次のとおりです。
GMSPlace
オブジェクトで返すフィールドのリスト。フィールド マスクとも呼ばれます。GMSPlaceProperty
で定義されます。フィールド リストでフィールドを 1 つも指定していない場合、またはフィールド リストを省略すると、呼び出しでエラーが返されます。- 場所の制限(検索範囲を定義する円)。
この周辺検索リクエストの例では、レスポンスの GMSPlace
オブジェクトに、検索結果の各 GMSPlace
オブジェクトの場所名(GMSPlacePropertyName
)と場所座標(GMSPlacePropertyCoordinate
)が含まれていることが指定されています。また、「restaurant」と「cafe」タイプの場所のみを返すようにレスポンスをフィルタします。
Swift
// Array to hold the places in the response var placeResults: [GMSPlace] = [] // Define the search area as a 500 meter diameter circle in San Francisco, CA. let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500) // Specify the fields to return in the GMSPlace object for each place in the response. let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue} // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties) let includedTypes = ["restaurant", "cafe"] request.includedTypes = includedTypes let callback: GMSPlaceSearchNearbyResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchNearby(with: request, callback: callback)
Objective-C
// Array to hold the places in the response _placeResults = [NSArray array]; // Define the search area as a 500 meter diameter circle in San Francisco, CA. id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500); // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc] initWithLocationRestriction:circularLocation placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]]; // Set the place types to filter on. NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ]; request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes]; [_placesClient searchNearbyWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { // Get list of places. _placeResults = places; } } ];
GooglePlacesSwift
let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500) let searchNearbyRequest = SearchNearbyRequest( locationRestriction: restriction, placeProperties: [ .name, .coordinate], includedTypes: [ .restaurant, .cafe ], ) switch await placesClient.searchNearby(with: searchNearbyRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Nearby Search レスポンス
Nearby Search API は、一致の配列をGMSPlace
オブジェクトの形式で返します。一致する場所ごとに 1 つの GMSPlace
オブジェクトが含まれます。レスポンスの GMSPlace
オブジェクトには、データ フィールドに加えて、次のメンバー関数が含まれています。
-
isOpen
は、指定された時間に場所が営業しているかどうかを計算します。 isOpenAtDate
は、特定の日に場所が営業しているかどうかを計算します。
必須パラメータ
GMSPlaceSearchNearbyRequest
オブジェクトを使用して、検索に必要なパラメータを指定します。
-
フィールド リスト
Place Details をリクエストするときは、その場所の
GMSPlace
オブジェクトで返すデータをフィールド マスクとして指定する必要があります。フィールド マスクを定義するには、GMSPlaceProperty
の値の配列をGMSPlaceSearchNearbyRequest
オブジェクトに渡します。 フィールド マスキングは、不要なデータをリクエストしないようにするための優れた設計上の方法です。これにより、不要な処理時間と課金を回避できます。以下のフィールドを 1 つ以上指定します。
次のフィールドによって Nearby Search(Basic)SKU がトリガーされます。
GMSPlacePropertyAddressComponents
、GMSPlacePropertyBusinessStatus
、GMSPlacePropertyCoordinate
、GMSPlacePropertyFormattedAddress
、GMSPlacePropertyName
、GMSPlacePropertyIconBackgroundColor
、GMSPlacePropertyIconImageURL
、GMSPlacePropertyPhotos
、GMSPlacePropertyPlaceID
、GMSPlacePropertyPlusCode
、GMSPlacePropertyTypes
、GMSPlacePropertyUTCOffsetMinutes
、GMSPlacePropertyViewport
、GMSPlacePropertyWheelchairAccessibleEntrance
次のフィールドによって Nearby Search(Advanced)SKU がトリガーされます。
GMSPlacePropertyCurrentOpeningHours
、GMSPlacePropertySecondaryOpeningHours
、GMSPlacePropertyPhoneNumber
、GMSPlacePropertyPriceLevel
、GMSPlacePropertyRating
、GMSPlacePropertyOpeningHours
、GMSPlacePropertyUserRatingsTotal
、GMSPlacePropertyWebsite
次のフィールドによって Nearby Search(Preferred)SKU がトリガーされます。
GMSPlacePropertyCurbsidePickup
、GMSPlacePropertyDelivery
、GMSPlacePropertyDineIn
、GMSPlacePropertyEditorialSummary
、GMSPlacePropertyReservable
、GMSPlacePropertyReviews
、GMSPlacePropertyServesBeer
、GMSPlacePropertyServesBreakfast
、GMSPlacePropertyServesBrunch
、GMSPlacePropertyServesDinner
、GMSPlacePropertyServesLunch
、GMSPlacePropertyServesVegetarianFood
、GMSPlacePropertyServesWine
、GMSPlacePropertyTakeout
次の例では、2 つのフィールド値のリストを渡して、リクエストによって返される
GMSPlace
オブジェクトにname
フィールドとplaceID
フィールドが含まれていることを指定します。Swift
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
GooglePlacesSwift
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
-
locationRestriction
検索対象領域を円で定義する
GMSPlaceLocationRestriction
オブジェクト。中心点と半径(メートル単位)で定義します。radius は 0.0 ~ 50000.0 の範囲で指定する必要があります。デフォルトの radius は 0.0 です。リクエストで 0.0 より大きい値に設定する必要があります。
省略可能なパラメータ
GMSPlaceSearchNearbyRequest
オブジェクトを使用して、検索のオプション パラメータを指定します。
-
includeTypes/excludedTypes、includedPrimaryTypes/excludedPrimaryTypes
検索結果のフィルタリングに使用する Table A タイプのタイプのリストを指定できます。タイプ制限カテゴリごとに最大 50 タイプを指定できます。
1 つの場所には、テーブル A タイプのメインタイプを 1 つのみ関連付けることができます。たとえば、メインのタイプは
"mexican_restaurant"
や"steak_house"
です。includedPrimaryTypes
とexcludedPrimaryTypes
を使用して、場所のメインのタイプで結果をフィルタリングします。1 つの場所に、Table A タイプの複数のタイプの値が関連付けられている場合もあります。たとえば、レストランが
"seafood_restaurant"
、"restaurant"
、"food"
、"point_of_interest"
、"establishment"
の各タイプを持つとします。includedTypes
とexcludedTypes
を使用して、場所に関連付けられているタイプのリストの結果をフィルタリングします。複数のタイプの制限を指定して検索を指定した場合は、すべての制限を満たす場所のみが返されます。たとえば、
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
を指定した場合、返される場所は"restaurant"
関連のサービスを提供しますが、主に"steak_house"
としては機能しません。includedTypes
検索対象の表 A の場所タイプのリスト。 このパラメータを省略すると、すべての型の桁数が返されます。
excludedTypes
検索から除外する表 A の場所タイプのリスト。
リクエストで
includedTypes
("school"
など)とexcludedTypes
("primary_school"
など)の両方を指定すると、レスポンスには"school"
に分類される場所が含まれますが、"primary_school"
に分類されない場所が含まれます。レスポンスには、includedTypes
の少なくとも 1 つに一致し、excludedTypes
ののいずれにも一致しない場所が含まれます。includedTypes
とexcludedTypes
の両方に型が競合するなど、競合する型がある場合は、INVALID_REQUEST
エラーが返されます。includedPrimaryTypes
検索に含める主な場所のタイプ(表 A)のリスト。
excludedPrimaryTypes
検索から除外する表 A の主要な場所タイプのリスト。
includedPrimaryTypes
とexcludedPrimaryTypes
の両方に型が競合するなど、競合する型がある場合は、INVALID_ARGUMENT
エラーが返されます。 -
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」(厳密には「グレート ブリテンおよび北アイルランド連合王国」の法人を意味します)です。パラメータは、適用される法律に基づいて結果に影響を与える可能性があります。
アプリに属性を表示する
アプリが GMSPlacesClient
から取得した情報(写真やレビューなど)を表示する場合、必要な属性も表示する必要があります。
たとえば、GMSPlacesClient
オブジェクトの reviews
プロパティには、最大 5 つの GMSPlaceReview
オブジェクトの配列が含まれます。各 GMSPlaceReview
オブジェクトには属性と作成者属性を含めることができます。アプリにレビューを表示する場合は、帰属または著者の帰属も表示する必要があります。
詳細については、アトリビューションのドキュメントをご覧ください。