Yakındaki Arama (Yeni) isteği, arama yapılacak bölgeyi giriş olarak alır
merkez noktasının enlem ve boylam koordinatlarıyla tanımlanan bir daire olarak belirtilir
ve metre cinsinden yarıçapı gösterir. İstek, her biri
GMSPlace
nesnesini ifade eder.
Varsayılan olarak yanıt, arama alanı içindeki her türden yeri içerir. İsterseniz açıkça eklenecek veya hariç tutulacak yer türlerinin listesini belirterek yanıtı filtreleyin: tıklayın. Örneğin, yanıta yalnızca "restoran", "pastane" ve "kafe" olabilir veya "okul" türündeki tüm yerleri hariç tutabilirsiniz.
Yakındaki Arama (Yeni) istekleri
Şu numarayı arayarak Yakında Arama isteğinde bulunma:
GMSPlacesClient searchNearbyWithRequest:
doğru
GMSPlaceSearchNearbyRequest
Türündeki istek parametrelerini ve bir geri çağırma yöntemini tanımlayan nesne
GMSPlaceSearchNearbyResultCallback
,
biraz zaman alabilir.
GMSPlaceSearchNearbyRequest
nesnesi,
zorunlu ve isteğe bağlı
parametrelerini kullanır. Gerekli parametreler şunları içerir:
GMSPlace
nesnesinde döndürülecek alanların listesi (diğer adıyla aşağıdaki şekilde tanımlandığı şekilde alan maskesi:GMSPlaceProperty
. Alan listesinde en az bir alan belirtmezseniz veya alan adını sonra çağrı, bir hata döndürür.- Konum kısıtlaması, arama alanını tanımlayan daire anlamına gelir.
Bu örnek yakındaki arama isteği, yanıt GMSPlace
nesnelerinin
yer adını (GMSPlacePropertyName
) ve yer koordinatlarını içermelidir
Aramadaki her GMSPlace
nesne için (GMSPlacePropertyCoordinate
)
sonuç. Ayrıca yanıtı yalnızca "restoran" türündeki yerleri döndürecek şekilde filtreler. ve "cafe" yer alır.
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; } } ];
GooglePlacesSwift
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 }
Yakındaki Arama yanıtları
Nearby Search API şu biçimde bir eşleşme dizisi döndürür:GMSPlace
nesnelerinde, eşleşen yer başına bir GMSPlace
nesnesi bulunur.
Veri alanlarıyla birlikte, GMSPlace
yanıt aşağıdaki üye işlevlerini içerir:
-
isOpen
, bir yerin belirli bir saatte açık olup olmadığını hesaplar. isOpenAtDate
bir yerin belirli bir tarihte açık olup olmadığını hesaplar.
Gerekli parametreler
Şunun için gerekli parametreleri belirtmek üzere GMSPlaceSearchNearbyRequest
nesnesini kullanın:
anlamına gelir.
-
Alan listesi
Yer ayrıntılarını istediğinizde, ayrıntılar için sonuç, yer için
GMSPlace
nesnesini alan maskesi olarak döndürür. Şunu tanımlamak için: alan maskesi,GMSPlaceProperty
. [GMSPlaceSearchNearbyRequest
nesnesine]. Alan maskeleme, gereksiz verileri istemediğinizden emin olmak için iyi bir tasarım uygulamasıdır, Böylece gereksiz işlem süresi ve faturalandırma masrafı ortadan kalkar.Aşağıdaki alanlardan birini veya daha fazlasını belirtin:
Aşağıdaki alanlar, Yakındakilerde Arama (Temel) SKU'su:
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyCoordinate
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyName
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlaceID
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
Aşağıdaki alanlar, Yakındakilerde Arama (Gelişmiş) SKU'su:
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Aşağıdaki alanlar, Yakındakiler İçin Arama (Tercih Edilen) SKU'su:
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
Aşağıdaki örnekte iki öğeli bir liste alan değerleri (istek tarafından döndürülen
GMSPlace
nesnesininname
veplaceID
alanları: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];
GooglePlacesSwift
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
-
locationRestriction
GMSPlaceLocationRestriction
Daire olarak belirtilen, merkez noktası ve ile tanımlanmış, aranacak bölgeyi tanımlayan nesne metre cinsinden yarıçap. Yarıçap, 0,0 ile 50.000,0 (her ikisi de dahil) arasında olmalıdır. Varsayılan yarıçap: 0,0. Bu değeri, isteğinizde 0,0'dan büyük bir değere ayarlamanız gerekir.
İsteğe bağlı parametreler
Şunun için isteğe bağlı parametreleri belirtmek üzere GMSPlaceSearchNearbyRequest
nesnesini kullanın:
anlamına gelir.
-
includeTypes/excludedTypes, includePrimaryTypes/excludedPrimaryTypes
Türlerden bir tür listesi belirtebilmenizi sağlar. Filtreleme için kullanılan Tablo A en iyi yoludur. Her bir tür kısıtlama kategorisinde en fazla 50 tür belirtilebilir.
Bir yerin, türlerden yalnızca tek bir birincil türü olabilir Şununla ilişkili Tablo A: somut olarak ortaya koyar. Örneğin, birincil tür
"mexican_restaurant"
veya"steak_house"
. Tekliflerinizi otomatikleştirmek ve optimize etmek için Sonuçları filtrelemek içinincludedPrimaryTypes
veexcludedPrimaryTypes
bir yerin birincil türü olabilir.Bir yer, türlerden birden fazla tür değerine de sahip olabilir A Tablosu görüntülenebilir. Örneğin, bir restoran aşağıdaki türlere sahip olabilir:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
.includedTypes
hesabını kullan veexcludedTypes
ile ilişkili türler listesindeki sonuçları filtrelemek için bir yer."restaurant"
veya"hotel"
, yanıt, belirtilen öğedir. Örneğin,"restaurant"
Böylece yanıt, birincil türün"restaurant"
, ancak yanıt daha spesifik yerler de içerebilir birincil tür, örneğin"chinese_restaurant"
veya"seafood_restaurant"
.Bir arama birden çok tür kısıtlamasıyla belirtilirse, yalnızca yerler için tüm kısıtlamaları karşılayanlar döndürülür. Örneğin,
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
, iade edilen yerler,"restaurant"
ile ilgili hizmet sağlıyor ancak öncelikli olarak faaliyet göstermiyor"steak_house"
olarak.includedTypes
Şu kaynaktan yer türlerinin bir listesi: Aranacak Tablo A'yı tıklayın. Bu parametre eklenmezse her türden yer döndürülür.
excludedTypes
Şu kaynaktan yer türlerinin bir listesi: Tablo A arayın.
Hem
includedTypes
(örneğin,"school"
) hem deexcludedTypes
("primary_school"
gibi) ve ardından yanıt,"school"
olarak sınıflandırılan ancak"primary_school"
. Yanıt, şunlardan en az biriyle eşleşen yerleri içerir:includedTypes
veexcludedTypes
hiçbiri.Çakışan türler varsa (örneğin, her iki
includedTypes
öğesinde de görünen bir tür) veexcludedTypes
iseINVALID_REQUEST
hatası döndürülür.includedPrimaryTypes
Şu konumdaki birincil yer türlerinin bir listesi: Dahil edilecek Tablo A anlamına gelir.
excludedPrimaryTypes
Şu konumdaki birincil yer türlerinin bir listesi: Hariç tutulacak Tablo A elde edebilirsiniz.
Çakışan birincil türler varsa (örneğin, her ikisinde de görünen bir tür)
includedPrimaryTypes
veexcludedPrimaryTypes
,INVALID_ARGUMENT
hata döndürüldü. -
maxResultCount
Döndürülecek maksimum yer sonucu sayısını belirtir. Şu değerler arasında olmalıdır: 1 ve 20 (varsayılan) değerleri dahil.
-
rankPreference
Kullanılacak sıralama türü. Bu parametre eklenmezse 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..distance
Sonuçları uzaklığa göre artan düzende sıralar. belirtilen konum.
-
regionCode
Yanıtı biçimlendirmek için kullanılan bölge kodu, CLDR kodu değerini girin. Varsayılan bir değer yok.
Yanıttaki
formattedAddress
alanının ülke adıregionCode
, ülke koduformattedAddress
öğesinden atlanır. Bu parametrenin, her zaman ülkeyi içerenadrFormatAddress
üzerinde etkisi yoktur. adı veya hiçbir zaman içermeyenshortFormattedAddress
üzerinde.Çoğu CLDR kodu aynıdır. ISO 3166-1 kodları, bazı önemli istisnalarla birlikte. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu "gb" ise (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı"). 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.