Yakın Çevrede Arama (Yeni) isteği, aranacak bölgeyi giriş olarak alır. Bu bölge, dairenin odak noktasının enlem ve boylam koordinatları ile metre cinsinden yarıçapı tarafından tanımlanan bir daire olarak belirtilir. İstek, belirtilen arama alanında, her biri bir GMSPlace nesnesiyle temsil edilen eşleşen yerlerin listesini döndürür.
Varsayılan olarak, yanıtta arama alanındaki tüm yer türleri bulunur. İsteğe bağlı olarak, yanıta açıkça dahil edilecek veya yanıttan hariç tutulacak yer türlerinin listesini belirterek yanıtı filtreleyebilirsiniz. Örneğin, yanıta yalnızca "restoran", "fırın" ve "kafe" türündeki yerlerin dahil edilmesini veya "okul" türündeki tüm yerlerin hariç tutulmasını belirtebilirsiniz.
Yakında Arama (Yeni) istekleri
GMSPlacesClient searchNearbyWithRequest: işlevini çağırarak bir Yakındaki Arama isteğinde bulunun. İstek parametrelerini ve yanıtı işlemek için GMSPlaceSearchNearbyResultCallback türünde bir geri çağırma yöntemini tanımlayan bir GMSPlaceSearchNearbyRequest nesnesi iletin.
GMSPlaceSearchNearbyRequest 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.- Konum kısıtlaması: Arama alanını tanımlayan daire.
Bu örnek yakındaki arama isteği, yanıttaki GMSPlace nesnelerinin, arama sonuçlarındaki her GMSPlace nesnesi için yer adını (GMSPlacePropertyName) ve yer koordinatlarını (GMSPlacePropertyCoordinate) içermesi gerektiğini belirtir. Ayrıca, yanıtı yalnızca "restoran" ve "kafe" türündeki yerleri döndürecek şekilde filtreler.
Places Swift SDK'sı
let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500) let searchNearbyRequest = SearchNearbyRequest( locationRestriction: restriction, placeProperties: [ .name, .coordinate], includedTypes: [ .restaurant, .cafe ], ) switch await placesClient.searchNearby(with: searchNearbyRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Swift
// Array to hold the places in the response var placeResults: [GMSPlace] = [] // Define the search area as a 500 meter diameter circle in San Francisco, CA. let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500) // Specify the fields to return in the GMSPlace object for each place in the response. let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue} // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties) let includedTypes = ["restaurant", "cafe"] request.includedTypes = includedTypes let callback: GMSPlaceSearchNearbyResultCallback = { [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().searchNearby(with: request, callback: callback)
Objective-C
// Array to hold the places in the response _placeResults = [NSArray array]; // Define the search area as a 500 meter diameter circle in San Francisco, CA. id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500); // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc] initWithLocationRestriction:circularLocation placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]]; // Set the place types to filter on. NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ]; request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes]; [_placesClient searchNearbyWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { // Get list of places. _placeResults = places; } } ];
Yakında Arama yanıtları
Yakında Arama API'si, eşleşen yer başına birGMSPlace nesnesi olacak şekilde GMSPlace biçiminde bir eşleşme dizisi döndürür.
Açılma 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
GMSPlacenesnesi veya bir yer kimliği belirten dize. Gerekli alanlarla Place 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 şu anki saat 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 Yer 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, kapalı veya durumunun bilinmediğini belirten status adlı bir Boole değeri içeren GMSPlaceIsOpenResponse nesnesi döndürür.
| Dil | Açık olduğunda değer | 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 GMSPlaceSearchNearbyRequest nesnesini kullanın.
-
Alan listesi
Yer ayrıntılarını istediğinizde, yer için
GMSPlacenesnesinde döndürülecek verileri alan maskesi olarak belirtmeniz gerekir. Alan maskesini tanımlamak içinGMSPlacePropertydeğerlerinden oluşan bir diziyiGMSPlaceSearchNearbyRequestnesnesine iletin. Alan maskeleme, gereksiz veri istemediğinizden emin olmanızı sağlayan iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresinden ve faturalandırma ücretlerinden kaçınabilirsiniz.Aşağıdaki alanlardan birini veya daha fazlasını belirtin:
Aşağıdaki alanlar Nearby Search Pro SKU'sunu tetikler:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyName
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyPhotos
GMSPlacePropertyPlaceID
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntranceAlanların ve ilişkili SKU'larının tam listesi için Yer Veri Alanları (Yeni) başlıklı makaleyi inceleyin.
Aşağıdaki alanlar Nearby Search Enterprise SKU'sunu tetikler:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteAlanların ve ilişkili SKU'larının tam listesi için Yer Veri Alanları (Yeni) başlıklı makaleyi inceleyin.
Aşağıdaki alanlar Nearby Search Enterprise Plus SKU'sunu tetikler:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeoutAlanların ve ilişkili SKU'larının tam listesi için Yer Veri Alanları (Yeni) başlıklı makaleyi inceleyin.
Aşağıdaki örnekte, bir istek tarafından döndürülen
GMSPlacenesnesininnameveplaceIDalanlarını içerdiğini belirtmek için iki alan değeri listesi iletilmektedir:Places Swift SDK'sı
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
Swift
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
-
locationRestriction
Arama yapılacak bölgeyi tanımlayan
GMSPlaceLocationRestrictionnesnesi. Bu bölge, odak noktası ve metre cinsinden yarıçap ile tanımlanan bir daire olarak belirtilir. Yarıçap 0,0 ile 50000,0 arasında (bu değerler dahil) olmalıdır. Varsayılan yarıçap 0,0'dır. İsteğinizde bunu 0,0'dan büyük bir değere ayarlamanız gerekir.
İsteğe bağlı parametreler
Arama için isteğe bağlı parametreleri belirtmek üzere GMSPlaceSearchNearbyRequest nesnesini kullanın.
-
includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes
Arama sonuçlarını filtrelemek için kullanılan türler Tablo A listesinden türler belirtmenize olanak tanır. Her tür kısıtlama kategorisinde en fazla 50 tür belirtilebilir.
Bir yer, Tablo A'da yer alan türlerden yalnızca tek bir birincil türe sahip olabilir. Örneğin, birincil tür
"mexican_restaurant"veya"steak_house"olabilir. Bir yerin birincil türüyle ilgili sonuçları filtrelemek içinincludedPrimaryTypesveexcludedPrimaryTypesöğelerini kullanın.Bir yer, Tablo A'daki türlerden birden fazla tür değerine de sahip olabilir. Tablo A ile ilişkilendirilmiş. Örneğin, bir restoranın şu türleri olabilir:
"seafood_restaurant","restaurant","food","point_of_interest","establishment". Bir yerle ilişkili türlerin listesindeki sonuçları filtrelemek içinincludedTypesveexcludedTypestuşlarını kullanın."restaurant"veya"hotel"gibi genel bir birincil tür belirttiğinizde yanıtta, belirtilen türden daha spesifik bir birincil türe sahip yerler olabilir. Örneğin, birincil tür olarak"restaurant"eklemeyi belirtirsiniz. Yanıtta, birincil türü"restaurant"olan yerler bulunabilir. Bununla birlikte, yanıtta"chinese_restaurant"veya"seafood_restaurant"gibi daha spesifik bir birincil türe sahip yerler de bulunabilir.Bir arama birden fazla tür kısıtlamasıyla belirtilirse yalnızca tüm kısıtlamaları karşılayan yerler döndürülür. Örneğin,
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}belirtirseniz döndürülen yerler"restaurant"ile ilgili hizmetler sunar ancak öncelikli olarak"steak_house"olarak faaliyet göstermez.includedTypes
Aranacak A Tablosu'ndaki yer türlerinin listesi. Bu parametre atlanırsa her türden yer döndürülür.
excludedTypes
Tablo A'daki yer türlerinin bir arama işleminden hariç tutulacak listesi.
İstek içinde hem
includedTypes(ör."school") hem deexcludedTypes(ör."primary_school") belirtirseniz yanıtta"school"olarak kategorize edilen ancak"primary_school"olarak kategorize edilmeyen yerler yer alır. Yanıtta,includedTypes'den en az biriyle eşleşen veexcludedTypes'den hiçbiriyle eşleşmeyen yerler yer alıyor.includedTypesveexcludedTypesgibi her ikisinde de görünen bir tür varsaINVALID_REQUESThatası döndürülür.includedPrimaryTypes
Aramaya dahil edilecek Tablo A'daki birincil yer türlerinin listesi.
excludedPrimaryTypes
Arama dışında tutulacak Tablo A'daki birincil yer türlerinin listesi.
includedPrimaryTypesveexcludedPrimaryTypes'de görünen bir tür gibi çakışan birincil türler varsaINVALID_ARGUMENThatası döndürülür. -
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).
-
rankPreference
Kullanılacak sıralama türü. Bu parametre atlanırsa sonuçlar popülerliğe göre sıralanır. Aşağıdakilerden biri olabilir:
.popularity(varsayılan) Sonuçları popülerliklerine göre sıralar..distanceSonuçları, belirtilen konuma olan mesafelerine göre artan düzende sıralar.
-
regionCode
Yanıtı biçimlendirmek için kullanılan bölge kodu, iki karakterli CLDR kodu değeri olarak belirtilir. Varsayılan değer yoktur.
Yanıttaki
formattedAddressalanının ülke adıregionCodeile eşleşiyorsa ülke koduformattedAddressalanından çıkarılır. Bu parametrenin, her zaman ülke adını içerenadrFormatAddressveya hiçbir zaman ülke adını içermeyenshortFormattedAddressüzerinde etkisi yoktur.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.
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şkilendirmesi de göstermeniz gerekir.
Daha fazla bilgi için ilişkilendirmeler ile ilgili dokümanları inceleyin.