Metin Arama, bir dizeye dayalı olarak bir yer grubuyla ilgili bilgileri döndürür. Örneğin, "İstanbul'da pizza", "İzmir yakınındaki ayakkabı mağazaları" veya "Ana Cadde No: 123". Hizmet, metin dizesiyle ve ayarlanan konum önyargısıyla eşleşen yerlerin bir listesiyle yanıt verir.
Hizmet özellikle otomatik bir sistemde belirsiz adres sorguları yapmak için yararlıdır ve dizenin adres olmayan bileşenleri, işletmelerin yanı sıra adreslerin de eşleşmesini sağlayabilir. Belirsiz adres sorgularına örnek olarak, kötü biçimlendirilmiş adresler veya işletme adları gibi adres olmayan bileşenler içeren istekler verilebilir. İlk iki örnek gibi istekler, bir konum (bölge, konum kısıtlaması veya konum yanlılığı gibi) ayarlanmadığı sürece sıfır sonuç döndürebilir.
"10 High Street, UK" veya "123 Main Street, ABD" | Birleşik Krallık'ta birden fazla "Ana Cadde", ABD'de birden fazla "Ana Cadde". Bir konum kısıtlaması ayarlanmadığı sürece sorgu, istenen sonuçları döndürmez. |
"İstanbul'da restoran zinciri" | New York'ta birden fazla "restoran zinciri" konumu; açık adres, hatta sokak adı yok. |
"10 High Street, Escher UK" veya "123 Main Street, Pleasanton Türkiye" | Birleşik Krallık'ın Escher şehrinde sadece bir "High Street"; ABD'nin Pleasanton CA şehrinde sadece bir "Main Street"tir. |
"Benzersiz RestoranAdı İstanbul" | New York'ta bu ada sahip yalnızca bir işletme var; ayırt etmek için açık adres gerekmez. |
"İstanbul'daki pizza restoranları" | 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 sorgu bir telefon numarası içeriyor. Bu telefon numarasıyla ilişkilendirilmiş yerler için birden fazla sonuç döndürür. |
Metin arama ile yer listesini alın
GMSPlacesClient
searchByTextWithRequest:
yöntemini çağırarak, yanıtı işlemek için istek parametrelerini tanımlayan bir GMSPlaceSearchByTextRequest
nesnesi ve GMSPlaceSearchByTextResultCallback
türündeki bir geri çağırma yöntemini ileterek Metin Arama isteğinde bulunun.
GMSPlaceSearchByTextRequest
nesnesi, istek için tüm gerekli ve isteğe bağlı parametreleri belirtir. Gerekli parametreler şunları içerir:
GMSPlaceProperty
ile tanımlandığı şekilde alan maskesi olarak da adlandırılanGMSPlace
nesnesinde döndürülecek alanların listesi. Alan listesinde en az bir alan belirtmezseniz veya alan listesini atlarsanız çağrı bir hata döndürür.- Metin sorgusu.
Bu örnek metin arama isteği, yanıt GMSPlace
nesnelerinin, arama sonuçlarındaki her bir GMSPlace
nesnesi için yer adını ve yer kimliğini içerdiğini belirtir. Ayrıca yanıtı yalnızca "restoran" türündeki yerleri döndürecek
şekilde filtreler.
Swift
// Create the GMSPlaceSearchByTextRequest object. let placeProperties: [GMSPlaceProperty] = [GMSPlacePropertyName, GMSPlacePropertyPlaceID]; let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York" placeProperties:placeProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue] request.locationRestriction = GMSPlaceRectangularLocationOption( CLLocationCoordinate2D(latitude: 20, longitude: 30), CLLocationCoordinate2D(latitude: 40, longitude: 50) ) // Array to hold the places in the response placeResults = []; 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 } self.placeResults = results } GMSPlacesClient.shared().searchByTextWithRequest(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.locationRestriction = GMSPlaceRectangularLocationOption( CLLocationCoordinate2DMake(20, 30), CLLocationCoordinate2DMake(40, 50)); request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(20, 30), 2.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 (placeResults.count > 0) { // Get list of places. _placeResults = placeResults; } }];
GooglePlacesSwift
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 }
Metin Arama yanıtları
Text Search API, eşleşen yer başına bir GMSPlace
nesnesi olmak üzere GMSPlace
nesneleri biçiminde bir eşleşme dizisi döndürür.
Yanıttaki GMSPlace
nesnesi, veri alanlarıyla birlikte şu üye işlevlerini de içerir:
-
isOpen
bir yerin belirli bir zamanda açık olup olmadığını hesaplar. isOpenAtDate
, bir yerin belirli bir tarihte açık olup olmadığını hesaplar.
Gerekli parametreler
Arama için gerekli parametreleri belirtmek üzere GMSPlaceSearchByTextRequest
nesnesini kullanın.
-
Alan listesi
Döndürülecek yer verisi özelliklerini belirtin. Döndürülecek veri alanlarını belirten
GMSPlace
özelliklerinin listesini iletin. Alan maskesini çıkarırsanız istek bir hata döndürür.Alan listeleri, gereksiz veri isteğinde bulunmadığınızdan emin olmak için iyi bir tasarım uygulamasıdır. Bu da gereksiz işlem süresi ve faturalandırma ücretlerinin önlenmesine yardımcı olur.
Aşağıdaki alanlardan birini veya daha fazlasını belirtin:
Aşağıdaki alanlar Metin Arama (Yalnızca Kimlik) SKU'sunu tetikler:
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
Aşağıdaki alanlar Metin Arama (Temel) SKU'sunu tetikler:
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
Aşağıdaki alanlar Metin Arama (Gelişmiş) SKU'sunu tetikler:
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Aşağıdaki alanlar Metin Arama (Tercih Edilen) SKU'sunu tetikler:
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
-
textQuery
Aranacak metin dizesi, örneğin: "restoran", "Ana Cadde 123" veya "İstanbul'da ziyaret edilecek en iyi yer".
İsteğe bağlı parametreler
Aramayla ilgili isteğe bağlı parametreleri belirtmek için GMSPlaceSearchByTextRequest
nesnesini kullanın.
includedType
Sonuçları, Tablo A tarafından tanımlanan belirtilen türle eşleşen yerlerle kısıtlar. Yalnızca bir tür belirtilebilir. Örneğin:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
true
ise yalnızca sorgunun gönderildiği sırada açık olan yerleri döndürün.false
ise açık durumundan bağımsız olarak tüm işletmeleri döndürün. Bu parametreyifalse
olarak ayarlarsanız Google Rehber veritabanında çalışma saatlerini belirtmeyen yerler döndürülür.isStrictTypeFiltering
includeType
parametresiyle kullanılır.true
olarak ayarlandığında, yalnızcaincludeType
tarafından belirtilen türlerle eşleşen yerler döndürülür. False (yanlış) değerine ayarlandığında varsayılan yanıt, belirtilen türlerle eşleşmeyen yerler içerebilir.locationBias
Aranacak alanı belirtir. Bu konum bir sapma görevi görür. Bu da belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumun etrafındaki sonuçların döndürülebileceği anlamına gelir.
locationRestriction
veyalocationBias
belirtebilirsiniz ancak ikisini birden belirtemezsiniz.locationRestriction
öğesini, sonuçların içinde olması gereken bölgeyi belirtmek,locationBias
öğesini ise sonuçların yakınında olması gereken ancak bölgenin dışında olabilecek bölgeyi belirtmek olarak düşünebilirsiniz.Bölgeyi dikdörtgen görünüm veya daire olarak belirtin.
Bir daire, merkez noktası ve metre cinsinden yarıçapla tanımlanır. Yarıçap, 0,0 ile 50.000,0 (her ikisi de dahil) arasında olmalıdır. Varsayılan yarıçap 0,0'dır. Örneğin:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(latitude: 20, longitude: 30), radius: 2.0)
Dikdörtgen, çapraz olarak zıt yönde iki düşük ve yüksek noktayla temsil edilen, enlem-boylam görüntü alanıdır. Alçak nokta, dikdörtgenin güneybatı köşesini, yüksek nokta ise dikdörtgenin kuzeydoğu köşesini temsil eder.
Görüntü alanı, kapalı bölge olarak kabul edilir. Yani kendi sınırlarını içerir. Enlem sınırları -90 ile 90 derece (dahil) arasında, boylam sınırları ise -180 ila 180 derece (her ikisi de dahil) arasında olmalıdır:
low
=high
olursa görüntü alanı, bu tek noktadan oluşur.low.longitude
>high.longitude
ise boylam aralığı tersine çevrilir (görüntü alanı 180 derecelik boylam çizgisini geçer).low.longitude
= -180 derece vehigh.longitude
= 180 derece olursa görüntü alanı tüm boylamları içerir.low.longitude
= 180 derece vehigh.longitude
= -180 derece olursa boylam aralığı boş olur.low.latitude
>high.latitude
olursa enlem aralığı boş olur.
locationRestriction
Aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Bölgeyi dikdörtgen görünüm alanı olarak belirtin. Viewport'u tanımlama hakkında bilgi edinmek için
locationBias
açıklamasına bakın.locationRestriction
veyalocationBias
belirtebilirsiniz ancak ikisini birden belirtemezsiniz.locationRestriction
öğesini, sonuçların içinde olması gereken bölgeyi belirtmek,locationBias
öğesini ise sonuçların yakınında olması gereken ancak bölgenin dışında olabilecek bölgeyi belirtmek olarak düşünebilirsiniz.-
maxResultCount
Döndürülecek maksimum yer sonucu sayısını belirtir. 1-20 (varsayılan) dahil bu değerler arasında olmalıdır.
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’lik artışlarla 0,0 ile 5,0 (dahil) arasında olmalıdır. Örneğin: 0, 0,5, 1,0, ... , 5,0 dahil bu sayılar. Değerler, en yakın 0,5'e yuvarlanır. Örneğin, 0,6 değeri 1,0'dan düşük olan tüm sonuçları eler.
-
priceLevels
Aramayı belirli fiyat düzeylerinde işaretlenmiş yerlerle sınırlandırın. Varsayılan olarak tüm fiyat düzeyleri seçilir.
PriceLevel
ile tanımlanan bir veya daha fazla değerden oluşan bir dizi belirtin.Örneğin:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
Sonuçların, sorgunun türüne göre yanıtta nasıl sıralandığını belirtir:
- "İstanbul'daki restoranlar" gibi bir kategorik sorgu için varsayılan değer
.relevance
(sonuçları arama alaka düzeyine göre sırala)dır.rankPreference
değerini.relevance
veya.distance
(sonuçları mesafeye göre sırala) olarak ayarlayabilirsiniz. - "Mountain View, CA" gibi kategorik olmayan bir sorgu için
rankPreference
politikasını ayarlamadan bırakmanızı öneririz.
- "İstanbul'daki restoranlar" gibi bir kategorik sorgu için varsayılan değer
regionCode
Yanıtı biçimlendirmek için kullanılan bölge kodu. İki karakterli CLDR kodu değeri olarak belirtilir. Bu parametrenin arama sonuçları üzerinde yanlılık etkisi de olabilir. Varsayılan bir değer yok.
Yanıttaki adres alanının ülke adı bölge koduyla eşleşiyorsa ülke kodu adresten çıkarılır.
CLDR kodların çoğu, bazı önemli istisnalar dışında ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu "gb" (teknik olarak "Büyük Britanya ve Kuzey İrlanda'daki Birleşik Krallık'a" ait tüzel kişi için) "gb" şeklindedir. Parametre, geçerli yasalara göre sonuçları etkileyebilir.
İlişkilendirmeleri uygulamanızda gösterme
Uygulamanız, GMSPlacesClient
'ten elde edilen bilgileri (ör. fotoğraflar ve yorumlar) görüntülediğinde gerekli atıfları da göstermelidir.
Örneğin, GMSPlacesClient
nesnesinin reviews
özelliği, en fazla beş GMSPlaceReview
nesnesinden oluşan bir dizi içeriyor. Her GMSPlaceReview
nesnesi atıflar ve yazar atıfları içerebilir.
Yorumu uygulamanızda gösteriyorsanız atıf veya yazar atfını da göstermeniz gerekir.
Daha fazla bilgi için ilişkilendirmeler hakkındaki belgeleri inceleyin.