Nearby Search(新規)

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

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 がトリガーされます。

      GMSPlacePropertyAddressComponentsGMSPlacePropertyBusinessStatusGMSPlacePropertyCoordinateGMSPlacePropertyFormattedAddressGMSPlacePropertyNameGMSPlacePropertyIconBackgroundColorGMSPlacePropertyIconImageURLGMSPlacePropertyPhotosGMSPlacePropertyPlaceIDGMSPlacePropertyPlusCodeGMSPlacePropertyTypesGMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyViewportGMSPlacePropertyWheelchairAccessibleEntrance

    • 次のフィールドによって Nearby Search(Advanced)SKU がトリガーされます。

      GMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHoursGMSPlacePropertyPhoneNumberGMSPlacePropertyPriceLevelGMSPlacePropertyRatingGMSPlacePropertyOpeningHoursGMSPlacePropertyUserRatingsTotalGMSPlacePropertyWebsite

    • 次のフィールドによって Nearby Search(Preferred)SKU がトリガーされます。

      GMSPlacePropertyCurbsidePickupGMSPlacePropertyDeliveryGMSPlacePropertyDineInGMSPlacePropertyEditorialSummaryGMSPlacePropertyReservableGMSPlacePropertyReviewsGMSPlacePropertyServesBeerGMSPlacePropertyServesBreakfastGMSPlacePropertyServesBrunchGMSPlacePropertyServesDinnerGMSPlacePropertyServesLunchGMSPlacePropertyServesVegetarianFoodGMSPlacePropertyServesWineGMSPlacePropertyTakeout

    次の例では、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" です。includedPrimaryTypesexcludedPrimaryTypes を使用して、場所のメインのタイプで結果をフィルタリングします。

    1 つの場所に、Table A タイプの複数のタイプの値が関連付けられている場合もあります。たとえば、レストランが "seafood_restaurant""restaurant""food""point_of_interest""establishment" の各タイプを持つとします。includedTypesexcludedTypes を使用して、場所に関連付けられているタイプのリストの結果をフィルタリングします。

    複数のタイプの制限を指定して検索を指定した場合は、すべての制限を満たす場所のみが返されます。たとえば、{"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 エラーが返されます。

  • 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 オブジェクトには属性と作成者属性を含めることができます。アプリにレビューを表示する場合は、帰属または著者の帰属も表示する必要があります。

詳細については、アトリビューションのドキュメントをご覧ください。