Metin Arama, bir dizi yer hakkında bilgi döndürür seçim yapabilirsiniz. Örneğin, "İstanbul'da pizza", "yakınındaki ayakkabı mağazaları" Ottawa" veya "Ana Cadde No: 123". Hizmet, bir yer listesiyle yanıt verir eşleşmesini ifade eder.
Bu hizmet özellikle, muğlak adresler sorguları dizenin adres olmayan bileşenleri, işletmelerle aynı zamanda adres. Belirsiz adres sorgusu örnekleri, kötü biçimlendirilmiş adreslerdir veya işletme adları gibi adres dışı bileşenler içeren istekler. İlk iki örnek gibi istekler, konum (bölge, konum kısıtlaması veya konum sapması gibi) ayarlanmış olmalıdır.
"10 High Street, Birleşik Krallık" veya "Ana Cadde No: 123, Türkiye" | Birleşik Krallık'ta birden fazla "High Street"s; ABD'de birden fazla "Ana Cadde" var. Konum kısıtlaması geçerli değilse sorgu, istenen sonuçları döndürmüyor. ayarlandı. |
"İstanbul'da restoran zinciri" | Birden çok "Zincir restoran" New York'taki konumlar; açık adres yok veya Hatta sokak adı bile olabilir. |
"İstiklal Caddesi 10, İstanbul" veya "İstiklal Caddesi No:123, İstanbul" | Yalnızca bir tane "Ana Cadde" İngiltere'nin Escher şehrinde; sadece bir tane "Ana Cadde" bir e-posta alırsınız. |
"Benzersiz RestoranAdı İstanbul" | New York'ta bu ada sahip tek bir işletme var. Ayrıştırmak için sokak adresi gerekmiyor. |
"New York'ta pizza restoranları" | Bu sorgu, konum kısıtlaması ve "pizza restoranları" ifadesini içeriyor : iyi tanımlanmış bir yer türü olabilir. Birden fazla sonuç döndürür. |
"+1 514-670-8700" | Bu sorgu bir telefon numarası içeriyor. Şunun için birden fazla sonuç döndürür: yer alır. |
Metin arama ile yer listesini alın
GMSPlacesClient
searchByTextWithRequest:
numaralı telefonu arayarak bir Metin Arama isteğinde bulunun.
doğru
GMSPlaceSearchByTextRequest
Türündeki istek parametrelerini ve bir geri çağırma yöntemini tanımlayan nesne
GMSPlaceSearchByTextResultCallback
,
biraz zaman alabilir.
GMSPlaceSearchByTextRequest
nesnesi,
zorunlu ve isteğe bağlı parametreler
belirtin. Gerekli parametreler şunları içerir:
GMSPlace
nesnesinde döndürülecek alanların listesi, ayrıca tarafından tanımlanan alan maskesi adı verilenGMSPlaceProperty
. Alan listesinde en az bir alan belirtmezseniz veya alan adını sonra çağrı, bir hata döndürür.- Metin sorgusu.
Bu örnek metin arama isteği, yanıt GMSPlace
nesnelerinin
aramadaki her GMSPlace
nesnesi için yer adını ve yer kimliğini içermelidir
sonuç. Ayrıca, yanıtı yalnızca şu türdeki yerleri döndürecek şekilde filtreler:
"restoran".
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; } } } ];
iOS için Yerler Swift SDK'sı (Önizleme)
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ı
Metin Arama API'si, eşleşen her yer için bir GMSPlace
nesnesi içeren GMSPlace
nesneleri biçiminde bir eşleşme dizisi döndürür.
Açık durumunu al
GMSPlacesClient
nesnesi, isOpenWithRequest
(Swift'te isOpenRequest
ve GooglePlacesSwift'te isPlaceOpenRequest
) adlı üye işlevi içerir. Bu işlev, çağrıda belirtilen saate göre söz konusu yerin o 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ündeki tek bir bağımsız değişken alır:
- Bir
GMSPlace
nesnesi veya yer kimliğini belirten bir dize. Gerekli alanlarla Yer nesnesinin oluşturulması hakkında daha fazla bilgi için Yer ayrıntıları'na bakın.
- Kontrol etmek istediğiniz zamanı belirten isteğe bağlı bir
NSDate
(Obj-C) veyaDate
(Swift) nesnesi. Herhangi bir saat belirtilmezse varsayılan olarak şu an kullanılır. - Yanıtı işlemek için
GMSPlaceOpenStatusResponseCallback
yöntemi. >
GMSPlaceIsOpenWithRequest
yöntemi, aşağıdaki alanların GMSPlace
nesnesinde ayarlanmasını gerektirir:
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
Bu alanlar Place nesnesinde sağlanmazsa veya bir yer kimliği iletiyorsanız yöntem bunları almak için GMSPlacesClient GMSFetchPlaceRequest:
kullanır.
isOpenWithRequest
yanıt
isOpenWithRequest
, işletmenin açık mı kapalı mı olduğunu veya durumun bilinmiyor olduğunu belirten status
adlı boole değerini içeren bir GMSPlaceIsOpenResponse
nesnesi döndürür.
Dil | Açıksa değer | Kapalıysa değer | Durum bilinmiyorsa değer |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (Önizleme) | true |
false |
nil |
isOpenWithRequest
için faturalandırma
GMSPlacePropertyUTCOffsetMinutes
veGMSPlacePropertyBusinessStatus
alanları, Temel Veri SKU'su kapsamında ücretlendirilir. Çalışma Saatlerinin geri kalanı için Yer Ayrıntıları (Gelişmiş) SKU altında ödeme alınır.GMSPlace
nesnenizde önceki bir istekte zaten bu alanlar varsa sizden tekrar ücret alınmaz.
Örnek: GMSPlaceIsOpenWithRequest
isteğinde bulunma
Aşağıdaki örnekte, mevcut bir GMSPlace
nesnesi içinde bir GMSPlaceIsOpenWithRequest
işleminin nasıl başlatılacağı gösterilmektedir.
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 }
Gerekli parametreler
Gerekli olduğunu belirtmek için GMSPlaceSearchByTextRequest
nesnesini kullanın
parametreleridir.
-
Alan listesi
Döndürülecek yer verisi özelliklerini belirtin. Şunlardan oluşan bir listeyi iletin:
GMSPlace
özellikleri ile birlikte döndürülecek veri alanlarını belirtin. Alanı atlarsanız isteği bir hata döndürür.Alan listeleri, gereksiz veri istememenizi sağlamak için 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 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", "123 Ana "İstanbul'da gidilecek en iyi yer".
İsteğe bağlı parametreler
İsteğe bağlı olanı belirtmek için GMSPlaceSearchByTextRequest
nesnesini kullanın
parametreleridir.
includedType
Sonuçları, tarafından tanımlanan belirtilen türle eşleşen yerlerle kısıtlar Tablo A. Yalnızca bir tür belirtilebilir. Örneğin:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
true
ise yalnızca faaliyette olan yerleri döndürün sorgu gönderilir.false
ise açık durumdan bağımsız olarak tüm işletmeleri döndürür. Google Rehber veritabanında çalışma saatleri belirtilmeyen yerler bu parametreyifalse
olarak ayarlarsanız döndürülür.isStrictTypeFiltering
includeType
parametresiyle kullanılır. Şuna ayarlandığındatrue
, yalnızcaincludeType
döndürüldü. False (yanlış) değerine ayarlandığında varsayılan, yanıtta eşleşmeyen yerler olabilir belirtilen türlerde.locationBias
Aranacak alanı belirtir. Bu konum, belirli bir belirtilen konumun etrafındaki sonuçlar, şunun sonuçları da dahil olmak üzere döndürülebilir: belirtilen alanın dışına çıktı.
locationRestriction
veyalocationBias
ikilisinden birini belirtebilirsiniz; ikisini birden belirtmeyin.locationRestriction
, sonuçların içinde olması gereken bölge velocationBias
olarak sonuçların yakınında olması gereken ancak dışında olabilecek bölgeyi belirtmek inceleyeceğiz.Bölgeyi dikdörtgen görünüm veya daire olarak belirtin.
Bir daire, merkez noktası ve metre cinsinden yarıçapıyla 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:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
Dikdörtgen, iki çapraz karşıt düşük ve yüksek nokta olarak temsil edilen bir enlem-boylam görüntü alanıdır. En düşük nokta güneybatıyı işaret eder dikdörtgenin köşesi, yüksek nokta ise kuzeydoğuyu köşesine dokunun.
Görüntü alanı, yani kendi sınırını içerir. Enlem sınırları -90 ile 90 derece (her ikisi de dahil) arasında olmalı ve boylam sınırları -180 ile 180 derece (her iki değer dahil) arasında olmalıdır:
low
=high
olursa görüntü alanı şunlardan oluşur: tek bir noktaya parmak bastınız.- Eğer
low.longitude
>high.longitude
, boylam aralığı ters çevrilmiş (görüntü alanı 180 dereceyi geçiyor boylam çizgisi) içerir. low.longitude
= -180 derece vehigh.longitude
= 180 derece, görüntü alanı tüm boylamlar.low.longitude
= 180 derece vehigh.longitude
= -180 derece, boylam aralığı boştur.- Eğer
low.latitude
>high.latitude
, enlem aralığı boş.
locationRestriction
Aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar geri döndü. Bölgeyi dikdörtgen görünüm alanı olarak belirtin. Açıklamayı göster /
locationBias
bölümünü tanımlama hakkında bilgi edinin.locationRestriction
veyalocationBias
, ancak ikisi birden değil.locationRestriction
, sonuçların içinde olması gereken bölge velocationBias
olarak sonuçların yakınında olması gereken ancak dışında olabilecek bölgeyi belirtmek inceleyeceğiz.-
maxResultCount
Döndürülecek maksimum yer sonucu sayısını belirtir. 1 ile 20 arasında (varsayılan) olmalıdır.
minRating
Sonuçları, yalnızca ortalama kullanıcı puanı şundan yüksek olanlarla kısıtlar: veya eşit olabilir. Değerler, 0,0 ile 5,0 (dahil) arasında olmalıdır 0,5'lik artışlar olacaktır. Örneğin: 0, 0,5, 1,0, ... , 5,0 dahil bu sayılar. Değerler 0,5'e yuvarlanır. Örneğin, 0,6 değeri, sonuç 1,0'ın altındadır.
-
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ğer dizisi belirtin.Örneğin:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
Sonuçların yanıtta türüne göre nasıl sıralandığını belirtir. sorgu:
- "İstanbul'daki Restoranlar" gibi bir kategorik sorgu için
.relevance
(sonuçları arama alaka düzeyine göre sıralama) varsayılan değerdir.rankPreference
öğesini.relevance
olarak ayarlayabilir veya.distance
(sonuçları mesafeye göre sırala). - "Mountain View, CA" gibi kategorik olmayan bir sorgu için
rankPreference
politikasını ayarlamadan bırakın.
- "İstanbul'daki Restoranlar" gibi bir kategorik sorgu için
regionCode
Yanıtı biçimlendirmek için kullanılan bölge kodu, CLDR kodu değerini girin. Bu parametrenin yanlılık etkisi de olabilir daha fazla bilgi edineceksiniz. Varsayılan bir değer yok.
Yanıttaki adres alanının ülke adı bölge kodundan ülke kodu atlanır.
Çoğu CLDR kodu ISO 3166-1 kodlarıyla aynıdır. bazı önemli istisnalarla birlikte. Ö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 yasalara göre sonuçları etkileyebilir.
İlişkilendirmeleri uygulamanızda gösterme
Uygulamanız,
GMSPlacesClient
(ör. fotoğraflar ve yorumlar) uygulamada, gerekli ilişkilendirmeler de gösterilmelidir.
Örneğin, GMSPlacesClient
nesnesinin reviews
özelliği
en fazla beşten oluşan bir dizi içerir
GMSPlaceReview
nesneler'i tıklayın. Her GMSPlaceReview
nesnesi atıflar ve yazar atıfları içerebilir.
Yorumu uygulamanızda gösteriyorsanız atıfı veya yazarı da göstermeniz gerekir
ilişkilendirmesine yardımcı olur.
Daha fazla bilgi için ilişkilendirmeler hakkındaki dokümanları inceleyin.