iOS için Places SDK (Yeni), uygulamanıza yerlerle ilgili zengin bilgiler sağlar. Bu bilgiler arasında yerin adı ve adresi, enlem/boylam koordinatları olarak belirtilen coğrafi konum, yer türü (ör. gece kulübü, evcil hayvan mağazası, müze) ve daha fazlası yer alır. Belirli bir yerle ilgili bu bilgilere erişmek için yer kimliğini (bir yeri benzersiz şekilde tanımlayan sabit bir tanımlayıcı) kullanabilirsiniz.
Yer ayrıntılarını alma
GMSPlace
sınıfı, Yer Veri Alanları (Yeni) bölümünde gösterilen tüm veri alanları dahil olmak üzere belirli bir yerle ilgili bilgileri içerir. GMSPlacesClient
fetchPlaceWithRequest:
yöntemini çağırarak, GMSFetchPlaceRequest
nesnesi ve GMSPlaceResultCallback
türünde bir geri çağırma yöntemi ileterek GMSPlace
nesnesi alın.
GMSFetchPlaceRequest
nesnesi şunları belirtir:
- (Zorunlu) Google Places veritabanında ve Google Haritalar'da bir yerin benzersiz tanımlayıcısı olan yer kimliği.
- (Zorunlu)
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. - (İsteğe bağlı) Yanıtı biçimlendirmek için kullanılan bölge kodu.
- (İsteğe bağlı) Otomatik Tamamlama (Yeni) oturumunu sonlandırmak için kullanılan oturum jetonu.
Yer Ayrıntıları isteğinde bulunma
Bu örnekte, aşağıdaki parametreler iletilerek kimliğe göre bir yer alınır:
ChIJV4k8_9UodTERU5KXbkYpSYs
yer kimliği.- Yer adının ve web sitesi URL'sinin döndürülmesini belirten bir alan listesi.
- Sonucu işlemek için
GMSPlaceResultCallback
kullanılır.
API, belirtilen geri çağırma yöntemini çağırarak GMSPlace
nesnesini iletir. Yer bulunamazsa yer nesnesi nil olur.
Places Swift SDK'sı
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.name, .website] ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): // Handle place case .failure(let placesError): // Handle error }
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue} // Create the GMSFetchPlaceRequest object. let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil) client.fetchPlace(with: fetchPlaceRequest, callback: { (place: GMSPlace?, error: Error?) in guard let place, error == nil else { return } print("Place found: \(String(describing: place.name))") })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite]; // Create the GMSFetchPlaceRequest object. GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil]; [placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { NSLog(@"Place Found: %@", place.name); NSLog(@"The place URL: %@", place.website); } }];
Yer ayrıntıları yanıtı
Yer Ayrıntıları, yerle ilgili ayrıntıları içeren bir GMSPlace
nesnesi döndürür. GMSPlace
nesnesinde yalnızca alan listesinde belirtilen alanlar doldurulur.
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
Gerekli parametreleri belirtmek için GMSFetchPlaceRequest
nesnesini kullanın.
Yer kimliği
iOS için Yerler SDK'sında kullanılan yer kimliği, Places API, Android için Yerler SDK'sı ve diğer Google API'lerinde kullanılan tanımlayıcıyla aynıdır. Her yer kimliği yalnızca bir yeri ifade edebilir ancak tek bir yerin birden fazla yer kimliği olabilir.
Bir yerin yeni bir yer kimliği almasına neden olabilecek durumlar vardır. Örneğin, bir işletme yeni bir konuma taşındığında bu durum yaşanabilir.
Bir yer kimliği belirterek yer isteğinde bulunduğunuzda, yanıt olarak her zaman aynı yeri alacağınızdan emin olabilirsiniz (yer hala mevcutsa). Ancak yanıtın, isteğinizdeki yer kimliğinden farklı bir yer kimliği içerebileceğini unutmayın.
Alan listesi
Yer ayrıntılarını isterken, yer için GMSPlace
nesnesinde döndürülecek verileri alan maskesi olarak belirtmeniz gerekir. Alan maskesini tanımlamak için GMSPlaceProperty
değerlerinden oluşan bir diziyi GMSFetchPlaceRequest
nesnesine iletin.
Gereksiz veri istemediğinizden emin olmak için alan maskeleme 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 Place Details Essentials ID Only SKU'yu tetikler:
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotos
Aşağıdaki alanlar Place Details Essentials SKU'sunu tetikler:
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewport
Aşağıdaki alanlar Yer Ayrıntıları Pro SKU'sunu tetikler:
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntrance
Aşağıdaki alanlar Yer Ayrıntıları Pro SKU'sunu tetikler:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
Aşağıdaki alanlar Place Details Enterprise SKU'sunu tetikler:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
Aşağıdaki örnekte, bir istek tarafından döndürülen GMSPlace
nesnesinin name
ve placeID
alanları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];
İsteğe bağlı parametreler
İsteğe bağlı parametreleri belirtmek için GMSFetchPlaceRequest
nesnesini kullanın.
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 de önyargı etkisi 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.
sessionToken
Oturum jetonları, kullanıcı tarafından oluşturulan ve otomatik tamamlama (yeni) çağrılarını "oturum" olarak izleyen dizelerdir. Otomatik Tamamlama (Yeni), kullanıcının otomatik tamamlama aramasıyla ilgili sorgu ve yer seçimi aşamalarını faturalandırma amacıyla ayrı bir oturumda gruplandırmak için oturum jetonlarını kullanır. Oturum jetonları, Otomatik Tamamlama (Yeni) çağrılarından sonra gelen Yer Ayrıntıları (Yeni) çağrılarına iletilir. Daha fazla bilgi için Oturum jetonları başlıklı makaleyi inceleyin.
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.