Metin Arama (Yeni) Bir dizeye göre bir grup yer hakkında bilgi döndürür (örneğin, "New York'ta pizza" veya "Ottawa yakınlarındaki ayakkabı mağazaları" ya da "123 Main Street"). Hizmet, metin dizesiyle eşleşen yerlerin ve ayarlanan konum önyargısının bulunduğu bir liste ile yanıt verir.
Zorunlu parametrelere ek olarak, Metin Arama (Yeni), daha iyi sonuçlar için isteğe bağlı parametreler kullanılarak sorguların hassaslaştırılmasını destekler.
Metin aramasıyla yerlerin listesini alma
GMSPlacesClient
searchByTextWithRequest: işlevini çağırarak, istek parametrelerini ve yanıtı işlemek için GMSPlaceSearchByTextResultCallback türünde bir geri çağırma yöntemini tanımlayan bir GMSPlaceSearchByTextRequest nesnesi ileterek bir Text Search isteği oluşturun.
GMSPlaceSearchByTextRequest nesnesi, istek için tüm zorunlu ve isteğe bağlı parametreleri belirtir. Gerekli parametreler şunlardır:
GMSPlacenesnesinde döndürülecek alanların listesi.GMSPlacePropertytarafından tanımlandığı şekilde alan maskesi olarak da adlandırılır. Alan listesinde en az bir alan belirtmezseniz veya alan listesini atlarsanız çağrı hata döndürür.- Metin sorgusu.
Bu örnek metin arama isteği, yanıttaki GMSPlace nesnelerinin, arama sonuçlarındaki her GMSPlace nesnesi için yer adı ve yer kimliği içermesini belirtir. Ayrıca yanıtı filtreleyerek yalnızca "restoran" türündeki yerleri döndürür.
Places Swift SDK'sı
let restriction = GMSPlaceRectangularLocationOption( 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 }
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; } } } ];
Metin Arama yanıtları
Text Search API, eşleşen her yer için bir GMSPlace nesnesi olacak şekilde GMSPlace nesneleri biçiminde bir eşleşme dizisi döndürür.
Açılma durumunu alma
GMSPlacesClient nesnesi, isOpenWithRequest (Swift'te isOpenRequest, GooglePlacesSwift'te isPlaceOpenRequest) adlı bir üye işlevi içerir. Bu işlev, çağrıda belirtilen zamana göre yerin şu anda açık olup olmadığını belirten bir yanıt döndürür.
Bu yöntem, aşağıdakileri içeren GMSPlaceIsOpenWithRequest türünde tek bir bağımsız değişken alır:
- Bir
GMSPlacenesnesi veya bir yer kimliği belirten dize. Gerekli alanlarla yer nesnesi oluşturma hakkında daha fazla bilgi için Yer ayrıntıları başlıklı makaleyi inceleyin.
- Kontrol etmek istediğiniz zamanı belirten isteğe bağlı bir
NSDate(Obj-C) veyaDate(Swift) nesnesi. Herhangi bir saat belirtilmezse varsayılan olarak "şimdi" değeri kullanılır. - Yanıtı işlemek için
GMSPlaceOpenStatusResponseCallbackyöntemi. >
GMSPlaceIsOpenWithRequest yöntemi için GMSPlace nesnesinde aşağıdaki alanların ayarlanması gerekir:
GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatusGMSPlacePropertyOpeningHoursGMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHours
Bu alanlar Place nesnesinde sağlanmazsa veya bir yer kimliği iletirseniz yöntem, bunları getirmek için GMSPlacesClient GMSFetchPlaceRequest: kullanır.
isOpenWithRequest yanıt
isOpenWithRequest, işletmenin açık veya kapalı olup olmadığını ya da durumun bilinip bilinmediğini belirten status adlı bir Boole değeri içeren GMSPlaceIsOpenResponse nesnesi döndürür.
| Dil | Açık tutar | Kapalıyken değer | Durum bilinmiyorsa değer |
|---|---|---|---|
| Places Swift | true |
false |
nil |
| Swift | .open |
.closed |
.unknown |
| Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
isOpenWithRequest için faturalandırma
GMSPlacePropertyUTCOffsetMinutesveGMSPlacePropertyBusinessStatusalanları, Temel Veri SKU'su kapsamında ücretlendirilir. Çalışma saatlerinin geri kalanı Yer Ayrıntıları Enterprise SKU'su kapsamında ücretlendirilir.GMSPlacenesnenizde önceki bir istekten gelen bu alanlar zaten varsa tekrar ücretlendirilmezsiniz.
Örnek: GMSPlaceIsOpenWithRequest isteğinde bulunma
Aşağıdaki örnekte, mevcut bir GMSPlace nesnesi içinde GMSPlaceIsOpenWithRequest öğesinin nasıl başlatılacağı gösterilmektedir.
Places Swift SDK'sı
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 }
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 } }];
Gerekli parametreler
Arama için gerekli parametreleri belirtmek üzere GMSPlaceSearchByTextRequest nesnesini kullanın.
-
Alan listesi
Hangi yer verisi özelliklerinin döndürüleceğini belirtin. Döndürülecek veri alanlarını belirten
GMSPlaceözelliklerinin listesini iletin. Alan maskesini atlarsanız istek hata döndürür.Alan listeleri, gereksiz veri istemediğinizden emin olmanızı sağlayan iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresi ve faturalandırma ücretlerinden kaçınabilirsiniz.
Aşağıdaki alanlardan birini veya daha fazlasını belirtin:
Aşağıdaki alanlar Text Search Essentials ID Only SKU'yu (Yalnızca Kimlikli Metin Arama Essentials SKU'su) tetikler:
GMSPlacePropertyPlaceIDAşağıdaki alanlar Text Search Pro SKU'sunu tetikler:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyPhotos
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntranceAşağıdaki alanlar Text Search Enterprise SKU'sunu tetikler:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteAşağıdaki alanlar Text Search Enterprise Plus SKU'sunu tetikler:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
-
textQuery
Aranacak metin dizesi (ör. "restoran", "123 Main Street" veya "San Francisco'da ziyaret edilebilecek en iyi yer").
İsteğe bağlı parametreler
Arama için isteğe bağlı parametreleri belirtmek üzere GMSPlaceSearchByTextRequest nesnesini kullanın.
includedType
Sonuçları, Tablo A'da tanımlanan belirtilen türle eşleşen yerlerle sınırlar. Yalnızca bir tür belirtilebilir. Örneğin:
let request = SearchByTextRequest()
request.includedType = "bar"let request = SearchByTextRequest()
request.includedType = "pharmacy"
isOpenNow
trueise yalnızca sorgu gönderildiğinde açık olan yerleri döndürün.falseise açık durumundan bağımsız olarak tüm işletmeleri döndürür. Google Yerler veritabanında çalışma saatlerini belirtmeyen yerler, bu parametreyifalseolarak ayarlarsanız döndürülür.isStrictTypeFiltering
includeTypeparametresiyle birlikte kullanılır.trueolarak ayarlandığında, yalnızcaincludeTypetarafından belirtilen türlerle eşleşen yerler döndürülür. Varsayılan değer olan false olduğunda yanıtta, belirtilen türlerle eşleşmeyen yerler olabilir.locationBias
Arama yapılacak bir alanı belirtir. Bu konum, bir önyargı olarak işlev görür. Bu nedenle, belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumla ilgili sonuçlar döndürülebilir.
locationRestrictionveyalocationBiasdeğerini belirtebilirsiniz ancak ikisini birden belirtemezsiniz.locationRestriction, sonuçların içinde olması gereken bölgeyi,locationBiasise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtir.Bölgeyi dikdörtgen bir görüntü alanı veya daire olarak belirtin.
Bir daire, merkez noktası ve metre cinsinden yarıçap ile tanımlanır. Yarıçap 0,0 ile 50000,0 arasında (bu değerler dahil) olmalıdır. Varsayılan yarıçap 0,0'dır. Örneğin:
let request = SearchByTextRequest() request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
Dikdörtgen, iki çapraz olarak zıt düşük ve yüksek nokta şeklinde gösterilen bir enlem-boylam görüntü alanıdır. Düşük nokta, dikdörtgenin güneybatı köşesini, yüksek nokta ise dikdörtgenin kuzeydoğu köşesini gösterir.
Görüntü alanı, sınırını da içeren kapalı bir bölge olarak kabul edilir. Enlem sınırları -90 ile 90 derece arasında (bu değerler dahil), boylam sınırları ise -180 ile 180 derece arasında (bu değerler dahil) olmalıdır:
low=highise görüntü alanı tek bir noktadan oluşur.low.longitude>high.longitudeise boylam aralığı ters çevrilir (görüntü alanı 180 derece boylam çizgisini geçer).low.longitude= -180 derece vehigh.longitude= 180 derece ise görüntü alanı tüm boylamları içerir.low.longitude= 180 derece vehigh.longitude= -180 derece ise boylam aralığı boş olur.low.latitude>high.latitudeise enlem aralığı boş olur.
locationRestriction
Arama yapılacak bir alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Bölgeyi dikdörtgen bir görüntü alanı olarak belirtin. Görüntü alanını tanımlama hakkında bilgi edinmek için
locationBiasaçıklamasını inceleyin.locationRestrictionveyalocationBiasdeğerini belirtebilirsiniz ancak ikisini birden belirtemezsiniz.locationRestriction, sonuçların içinde olması gereken bölgeyi,locationBiasise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtir.-
maxResultCount
Döndürülecek maksimum yer sonucu sayısını belirtir. 1 ile 20 (varsayılan) arasında olmalıdır (bu değerler dahil).
minRating
Sonuçları yalnızca ortalama kullanıcı puanı bu sınırdan yüksek veya bu sınıra eşit olanlarla kısıtlar. Değerler, 0,5 artışlarla 0,0 ile 5,0 (başlangıç ve bitiş değerleri dahil) arasında olmalıdır. Örneğin: 0, 0,5, 1,0, ... , 5,0 (5,0 dahil). Değerler en yakın 0,5'e yuvarlanır. Örneğin, 0,6 değeri 1,0'dan düşük puanlı tüm sonuçları ortadan kaldırır.
-
priceLevels
Aramayı belirli fiyat seviyelerinde işaretlenmiş yerlerle sınırlayın. Varsayılan olarak tüm fiyat seviyeleri seçilir.
PriceLeveltarafından tanımlanan bir veya daha fazla değerden oluşan bir dizi belirtin.Örneğin:
let request = SearchByTextRequest() request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
Sonuçların, sorgu türüne göre yanıtta nasıl sıralanacağını belirtir:
- "New York'taki restoranlar" gibi kategorik bir sorgu için varsayılan olarak
.relevance(sonuçları arama alaka düzeyine göre sırala) kullanılır.rankPreferenceseçeneğini.relevanceveya.distance(sonuçları mesafeye göre sırala) olarak ayarlayabilirsiniz. - "Mountain View, CA" gibi kategorik olmayan bir sorgu için
rankPreferenceayarını yapmamanızı öneririz.
- "New York'taki restoranlar" gibi kategorik bir sorgu için varsayılan olarak
regionCode
Yanıtı biçimlendirmek için kullanılan bölge kodu, iki karakterli CLDR kodu değeri olarak belirtilir. Bu parametre, arama sonuçları üzerinde önyargı etkisi de yaratabilir. Varsayılan değer yoktur.
Yanıtın adres alanındaki ülke adı, bölge koduyla eşleşiyorsa ülke kodu adresten çıkarılır.
Bazı önemli istisnalar dışında çoğu CLDR kodu, ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu ise "gb"dir (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı" tüzel kişiliği için). Parametre, geçerli yasaya göre sonuçları etkileyebilir.
shouldIncludePureServiceAreaBusinesses
trueise arama sonuçlarında yalnızca hizmet alanı işletmelerini döndürür. Salt hizmet bölgesi işletmesi, müşterileri doğrudan ziyaret eden veya onlara teslimat yapan ancak işletme adresinde müşterilere hizmet vermeyen işletmelerdir.Örneğin:
Places Swift SDK'sı
let request = SearchByTextRequest() request.shouldIncludePureServiceAreaBusinesses = true
Swift
let request = SearchByTextRequest() request.shouldIncludePureServiceAreaBusinesses: true
Objective-C
GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyAll]]; request.shouldIncludePureServiceAreaBusinesses = YES;
Uygulamanızda ilişkilendirmeleri gösterme
Uygulamanız GMSPlacesClient'dan alınan bilgileri (ör. fotoğraflar ve yorumlar) gösterdiğinde, gerekli atıfları da göstermelidir.
Örneğin, GMSPlacesClient nesnesinin reviews özelliği, en fazla beş GMSPlaceReview nesnesinden oluşan bir dizi içerir. Her GMSPlaceReview nesnesi, atıflar ve yazar atıfları içerebilir.
Yorumu uygulamanızda gösteriyorsanız ilişkilendirme veya yazar ilişkilendirmesini de göstermeniz gerekir.
Daha fazla bilgi için ilişkilendirmeler ile ilgili dokümanları inceleyin.