Text Search は、文字列に基づいてプレイスのセットに関する情報を返します。たとえば、「渋谷 ピザショップ」「表参道 靴店」「123 番地」といった文字列に対して、場所のセットについての情報を返します。このサービスは、場所のリストを返します。 位置情報のバイアスを照合する
このサービスは、自動システムであいまいな住所をクエリする場合に特に便利です。文字列の住所以外の構成要素を、店舗や住所と照合できます。あいまいな住所のクエリには、不適切な形式の住所、店舗名など住所以外の要素を含むリクエストなどがあります。最初の 2 つの例のようなリクエストの場合、 場所(地域、場所の制限、場所のバイアスなど)が設定されている。
「10 High Street, UK」または「123 Main Street, US」 | 英国内の複数の「ハイ ストリート」米国の場合は複数の「Main Street」が存在します。 地域制限を指定しないと、クエリは望ましい結果を返さない あります。 |
「ニューヨーク レストラン チェーン」 | 複数の「チェーン店」ニューヨークにある番地がない、または 識別します |
「東京都港区北青山 4-20-3」または「123 Main Street, Pleasanton US」 | 「High Street」は 1 つだけです英国のエッシャー市に拠点を置く「Main Street」を 1 つだけ カリフォルニア州プレザントン市に拠点を置く組織です |
「UniqueRestaurantName New York」 | ニューヨークでこの名前の施設が 1 つのみである番地なし 考慮する必要があります |
「ニューヨークのピザレストラン」 | このクエリには、場所の制限と「ピザレストラン」が含まれています。 明確に定義された場所タイプです複数の結果が返されます。 |
「+1 514-670-8700」 | このクエリには電話番号が含まれています。次のキーワードに対して複数の結果が返されます。 場所が表示されます。 |
テキスト検索で場所のリストを取得する
GMSPlacesClient
searchByTextWithRequest:
を呼び出して Text Search リクエストを行います。
渡す
GMSPlaceSearchByTextRequest
リクエスト パラメータとコールバック メソッドを定義するオブジェクト
GMSPlaceSearchByTextResultCallback
,
レスポンスを処理します。
GMSPlaceSearchByTextRequest
オブジェクトには、リクエストのすべての必須パラメータと省略可能なパラメータを指定します。必須パラメータは次のとおりです。
GMSPlace
オブジェクトで返されるフィールドのリスト。また、 フィールド マスクといいます。これは、GMSPlaceProperty
。 フィールド リストで 1 つ以上のフィールドを指定しない場合、またはフィールドを省略した場合 その場合、呼び出しはエラーを返します。- テキストクエリ。
このテキスト検索リクエストの例では、レスポンスの GMSPlace
オブジェクトを指定しています。
検索に含まれる各 GMSPlace
オブジェクトのプレイス名とプレイス ID が含まれます。
表示されます。また、次のタイプの場所のみを返すようにレスポンスをフィルタします。
「レストラン」
Swift
// Create the GMSPlaceSearchByTextRequest object. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue} let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0) // Array to hold the places in the response var placeResults: [GMSPlace] = [] let callback: GMSPlaceSearchByTextResultCallback = { [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().searchByText(with: request, callback: callback)
Objective-C
// Create the GMSPlaceSearchByTextRequest object. GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]]; request.isOpenNow = YES; request.includedType = @"restaurant"; request.maxResultCount = 5; request.minRating = 3.5; request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance; request.isStrictTypeFiltering = YES; request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ]; request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0); // Array to hold the places in the response _placeResults = [NSArray array]; // Create the GMSPlaceSearchByTextRequest object. [_placesClient searchByTextWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable placeResults, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { if (placeResults.count > 0) { // Get list of places. _placeResults = placeResults; } } } ];
Places Swift SDK for iOS(プレビュー)
let restriction = RectangularLocationRestriction( northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30), southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50) ) let searchByTextRequest = SearchByTextRequest( textQuery: "pizza in New York", placeProperties: [ .name, .placeID ], locationRestriction: restriction, includedType: .restaurant, maxResultCount: 5, minRating: 3.5, priceLevels: [ .moderate, .inexpensive ], isStrictTypeFiltering: true ) switch await placesClient.searchByText(with: searchByTextRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Text Search のレスポンス
Text Search API は、一致した文字列を
GMSPlace
一致する場所ごとに 1 つの GMSPlace
オブジェクトがあります。
営業状況を確認する
GMSPlacesClient
オブジェクトには isOpenWithRequest
というメンバー関数(Swift では isOpenRequest
、GooglePlacesSwift では isPlaceOpenRequest
)が含まれています。この関数は、呼び出しで指定された時間に基づいて、現在営業中かどうかを示すレスポンスを返します。
このメソッドは、以下を含む GMSPlaceIsOpenWithRequest
型の引数を 1 つ取ります。
GMSPlace
オブジェクト、またはプレイス ID を指定する文字列。必要なフィールドを使用して Place オブジェクトを作成する方法については、場所の詳細をご覧ください。
- 確認する時刻を指定するオプションの
NSDate
(Obj-C)オブジェクトまたはDate
(Swift)オブジェクト。時刻が指定されていない場合、デフォルトは現在時刻です。 - レスポンスを処理する
GMSPlaceOpenStatusResponseCallback
メソッド。 >
GMSPlaceIsOpenWithRequest
メソッドでは、GMSPlace
オブジェクトで次のフィールドを設定する必要があります。
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
これらのフィールドがプレイス オブジェクトで指定されていない場合や、プレイス ID を渡した場合、メソッドは GMSPlacesClient GMSFetchPlaceRequest:
を使用してフィールドを取得します。
isOpenWithRequest
レスポンス
isOpenWithRequest
は、ビジネスが営業中か閉店中か、ステータスが不明かを示している status
という名前のブール値を含む GMSPlaceIsOpenResponse
オブジェクトを返します。
言語 | オープンの場合の値 | 閉じた場合の値 | ステータスが不明な場合の値 |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift(プレビュー) | true |
false |
nil |
isOpenWithRequest
の請求
GMSPlacePropertyUTCOffsetMinutes
フィールドとGMSPlacePropertyBusinessStatus
フィールドは、Basic Data SKU に基づいて課金されます。営業時間の残りの時間は、Place Details(Advanced)SKU に基づいて課金されます。GMSPlace
オブジェクトに以前のリクエストのこれらのフィールドがすでに含まれている場合、再度課金されることはありません。
例: GMSPlaceIsOpenWithRequest
リクエストを行う
次の例は、既存の GMSPlace
オブジェクト内で GMSPlaceIsOpenWithRequest
を初期化する方法を示しています。
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
GooglePlacesSwift
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
必須パラメータ
GMSPlaceSearchByTextRequest
オブジェクトを使用して、検索に必要なパラメータを指定します。
-
フィールドリスト
返すプレイスデータ プロパティを指定します。リストを渡す
GMSPlace
返されるデータ フィールドを指定するプロパティです。フィールドを省略すると、 含まれている場合、リクエストはエラーを返します。フィールド リストを設計することをおすすめします。これにより、 保存し、不要な処理時間を回避して、 請求料金を管理できます。
次のフィールドを 1 つ以上指定します。
次のフィールドで Text Search(ID のみ)SKU がトリガーされます。
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
次のフィールドで Text Search(Basic)SKU がトリガーされます。
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
次のフィールドは、Text Search (Advanced) SKU をトリガーします。
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
次のフィールドで Text Search(Preferred)SKU がトリガーされます。
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
-
textQuery
検索するテキスト文字列(例: 「レストラン」、「123 メイン」) 「サンフランシスコで一番おすすめの場所」などの語句を入力します。
オプション パラメータ
GMSPlaceSearchByTextRequest
オブジェクトを使用して、オプションの
パラメータを指定します。
includedType
指定したタイプに一致する場所のみを表示します。 表 A. 1 つのタイプのみ指定できます。例:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
true
の場合、クエリが送信された時点で営業している場所のみを返します。false
の場合は、すべてのビジネスが返されます。 オープンステータスに関係なく このパラメータをfalse
に設定すると、Google プレイスのデータベースに営業時間が登録されていない場所も返されます。isStrictTypeFiltering
includeType
パラメータとともに使用します。true
に設定すると、includeType
で指定されたタイプに一致するプレイスのみが返されます。false(デフォルト)の場合、一致しない場所がレスポンスに含まれる可能性があります。 作成されます。locationBias
検索する領域を指定します。この位置情報はバイアスとして機能します。つまり、指定された位置情報の周辺の結果(指定されたエリア外の検索結果を含む)が返される可能性があります。
locationRestriction
またはlocationBias
を指定できます。 両方はできませんlocationRestriction
は、結果が含まれる必要があるリージョンを指定すると考えてください。locationBias
は、結果が近い必要があるリージョンを指定すると考えてください。ただし、そのリージョンの外側に結果が存在してもかまいません。領域を長方形のビューポートまたは円として指定します。
円は、中心点と半径(メートル単位)で定義されます。半径は 0.0~50000.0 の範囲で指定する必要があります。デフォルトの radius は 0.0 です。 例:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
長方形は緯度と経度のビューポートで、対角線上の 2 つの低いポイントと高いポイントで表されます。低い地点は南西です 頂点は北東を表します 決定します
ビューポートは 境界を含みます。緯度の範囲は -90~90 度、経度の範囲は -180~180 度の範囲内で指定する必要があります。
low
=high
の場合、ビューポートは単一のポイントで構成されます。low.longitude
> の場合high.longitude
、 経度の範囲が反転します(ビューポートが 180 度を横断します)。 。low.longitude
= -180 度、high.longitude
= 180 度の場合、ビューポートにはすべての経度が含まれます。low.longitude
= 180 度、かつhigh.longitude
= -180 度、経度範囲 空です。low.latitude
> の場合high.latitude
、 緯度の範囲が空です。
locationRestriction
検索する領域を指定します。指定領域外の検索結果は 返されます。領域を長方形のビューポートとして指定します。ビューポートの定義については、
locationBias
の説明をご覧ください。locationRestriction
またはlocationBias
を指定できます。 両方はできませんlocationRestriction
は、 結果が存在する必要があるリージョンと、locationBias
が 結果を検索する地域を、この地域に近いが範囲外でもよい エリアです。-
maxResultCount
返されるプレイス結果の最大数を指定します。1~20(デフォルト)の値にする必要があります。
minRating
平均ユーザー評価がこの上限以上の結果のみを表示します。値は 0.0 ~ 5.0 の範囲で指定してください。 0.5 単位で指定します。例: 0、0.5、1.0、...、5.0。値は次のとおりです。 0.5 単位で切り上げられますたとえば、値を 0.6 にすると、すべての 1.0 未満にします。
-
priceLevels
検索対象を、特定の料金レベルとしてマークされている場所に限定します。 デフォルトでは、すべての価格レベルが選択されています。
次で定義された 1 つ以上の値の配列を指定します。
PriceLevel
。例:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
次のタイプに基づいてレスポンス内の結果のランク付け方法を指定します。 query:
- 「ニューヨークのレストラン」などのカテゴリ検索の場合、デフォルトは
.relevance
(検索の関連性に基づいて結果をランク付け)です。rankPreference
を.relevance
に設定するか、.distance
(距離で結果をランク付けする) - 「Mountain View, CA」のようなカテゴリーではないクエリの場合は、
rankPreference
を未設定のままにした場合。
- 「ニューヨークのレストラン」などのカテゴリ検索の場合、デフォルトは
regionCode
レスポンスのフォーマットに使用される地域コード。 2 文字の CLDR コードの値。このパラメータはバイアス効果をもたらすことも 表示されます。デフォルト値はありません。
レスポンスの住所フィールドの国名が 地域コードは、住所から省略されます。
ほとんどの CLDR コードは ISO 3166-1 コードと同一です。 いくつか例外がありますたとえば、英国の ccTLD は 「uk」(.co.uk)、ISO 3166-1 コードは「gb」(技術的には、 「グレート ブリテンおよび北アイルランド連合王国」という当事者である必要があります)。 このパラメータは、適用される法律に基づいて結果に影響する可能性があります。
アプリに属性を表示する
以下から取得した情報をアプリが表示するタイミング
GMSPlacesClient
必要な帰属情報も表示する必要があります。
たとえば、GMSPlacesClient
オブジェクトの reviews
プロパティは、
最大 5 つの配列を
GMSPlaceReview
説明します。各 GMSPlaceReview
オブジェクトには、帰属表示と著者帰属を含めることができます。
アプリにレビューを表示する場合は、帰属情報または著者名も表示する必要があります。
あります。
詳細については、このモジュールのコースリソースに アトリビューション。