Metin Arama, bir dizeye göre bir dizi yer hakkında bilgi döndürür. Örneğin, "New York'ta pizza", "Ankara yakınlarındaki ayakkabı mağazaları" veya "123 Ana Cadde". Hizmet, metin dizesiyle ve ayarlanan konum önyargısıyla eşleşen yerlerin listesini döndürür.
Bu hizmet, özellikle otomatik bir sistemde belirsiz adres sorguları oluşturmak için kullanışlıdır. Dizenin adres olmayan bileşenleri, işletmelerle ve adreslerle eşleşebilir. Belirsiz adres sorgularına örnek olarak kötü biçimlendirilmiş adresler veya işletme adları gibi adres dışı bileşenler içeren istekler verilebilir. İlk iki örnekteki gibi istekler, bir konum (ör. bölge, konum kısıtlaması veya konum önyargısı) ayarlanmadığı sürece sıfır sonuç döndürebilir.
"10 High Street, UK" veya "123 Main Street, US" | Birleşik Krallık'ta birden fazla "High Street"; ABD'de birden fazla "Main Street". Sorgu, konum kısıtlaması ayarlanmadığı sürece istenen sonuçları döndürmüyor. |
"New York'taki zincir restoranlar" | New York'ta birden fazla "Zincir restoran" konumu var. Sokak adresi veya sokak adı bile yok. |
"10 High Street, Escher UK" veya "123 Main Street, Pleasanton US" | Birleşik Krallık'taki Escher şehrinde yalnızca bir "High Street"; ABD'deki Pleasanton CA şehrinde yalnızca bir "Main Street" vardır. |
"UniqueRestaurantName New York" | New York'ta bu ada sahip tek bir kuruluş var. Ayırt etmek için sokak adresi gerekmiyor. |
"New York'taki pizzacılar" | Bu sorgu, konum kısıtlaması içeriyor ve "pizza restoranları" iyi tanımlanmış bir yer türü. Birden fazla sonuç döndürür. |
"+1 514-670-8700" | Bu sorguda telefon numarası var. Bu numara, telefon numarasıyla ilişkili yerler için birden fazla sonuç döndürür. |
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 gönderin.
GMSPlaceSearchByTextRequest
nesnesi, istek için tüm zorunlu ve isteğe bağlı parametreleri belirtir. Gerekli parametreler şunlardır:
GMSPlace
nesnesinde döndürülecek alanların listesi.GMSPlaceProperty
tarafı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 = 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 }
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çık durumunu alma
GMSPlacesClient
nesnesi, isOpenWithRequest
adlı bir üye işlevi içerir (Swift'te isOpenRequest
, GooglePlacesSwift'te isPlaceOpenRequest
). 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
GMSPlace
nesnesi 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
GMSPlaceOpenStatusResponseCallback
yöntemi. >
GMSPlaceIsOpenWithRequest
yöntemi için GMSPlace
nesnesinde aşağıdaki alanların ayarlanması gerekir:
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
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 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
GMSPlacePropertyUTCOffsetMinutes
veGMSPlacePropertyBusinessStatus
alanları, Temel Veri SKU'su kapsamında ücretlendirilir. Çalışma saatlerinin geri kalanı Yer Ayrıntıları Enterprise SKU'su kapsamında ücretlendirilir.GMSPlace
nesnenizde ö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
değerinin 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:
GMSPlacePropertyPlaceID
Aşağıdaki alanlar Text Search Pro SKU'sunu tetikler:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyPhotos
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntrance
Aşağıdaki alanlar Text Search Enterprise SKU'sunu tetikler:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
Aş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ı, A Tablosu'nda 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
true
ise yalnızca sorgu gönderildiğinde açık olan yerleri döndürün.false
ise açık durumundan bağımsız olarak tüm işletmeleri döndürür. Google Yerler veritabanında çalışma saatleri belirtilmeyen yerler, bu parametreyifalse
olarak ayarlarsanız döndürülür.isStrictTypeFiltering
includeType
parametresiyle birlikte kullanılır.true
olarak ayarlandığında yalnızcaincludeType
tarafından belirtilen türlerle eşleşen yerler döndürülür. Varsayılan değer olan "yanlış" 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.
locationRestriction
veyalocationBias
değerini belirtebilirsiniz ancak ikisini birden belirtemezsiniz.locationRestriction
, sonuçların içinde olması gereken bölgeyi,locationBias
ise 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 olarak 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
=high
ise görüntü alanı tek bir noktadan oluşur.low.longitude
>high.longitude
ise 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.latitude
ise 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
locationBias
açıklamasını inceleyin.locationRestriction
veyalocationBias
değerini belirtebilirsiniz ancak ikisini birden belirtemezsiniz.locationRestriction
, sonuçların içinde olması gereken bölgeyi,locationBias
ise 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.
PriceLevel
tarafı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ıttaki sıralaması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.rankPreference
seçeneğini.relevance
veya.distance
(sonuçları mesafeye göre sırala) olarak ayarlayabilirsiniz. - "Mountain View, CA" gibi kategorik olmayan bir sorgu için
rankPreference
ayarı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) iken ISO 3166-1 kodu "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
true
ise arama sonuçlarında yalnızca hizmet alanı işletmeleri döndürülü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
nesnesi dizisi 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 hakkındaki belgelere göz atın.