iOS için Yerler SDK'sı (Yeni), uygulamanıza yer 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ı dahil olmak üzere yerler hakkında zengin bilgiler sağlar. Belirli bir yerle ilgili bu bilgilere erişmek için yer kimliğini kullanabilirsiniz. Yer kimliği, bir yeri benzersiz şekilde tanımlayan kararlı bir tanımlayıcıdır.
Yer ayrıntılarını alma
GMSPlace
sınıfı, Yer Veri Alanları (Yeni) bölümünde gösterilen tüm veri alanları da dahil olmak üzere belirli bir yerle ilgili bilgileri içerir. GMSPlacesClient
fetchPlaceWithRequest:
yöntemini çağırarak, GMSFetchPlaceRequest
nesnesi ve GMSPlaceResultCallback
türündeki bir geri çağırma yöntemi geçirerek GMSPlace
nesnesi alın.
GMSFetchPlaceRequest
nesnesi şunları belirtir:
- (Zorunlu) Google Rehber veritabanında ve Google Haritalar'da bir yerin benzersiz tanımlayıcısıdır.
- (Zorunlu)
GMSPlaceProperty
tarafından tanımlandığı şekliyleGMSPlace
nesnesinde döndürülecek alanların listesi (alan maskesi olarak da bilinir). Alan listesinde en az bir alan belirtmezseniz veya alan listesini atlarsanız çağrı bir 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ği gönderme
Bu örnekte, aşağıdaki parametreler ile bir yer kimliğine göre yer alınır:
ChIJV4k8_9UodTERU5KXbkYpSYs
yer kimliği.- Yer adını ve web sitesi URL'sini döndürmeyi belirten bir alan listesi.
- Sonuçları işlemek için bir
GMSPlaceResultCallback
API, belirtilen geri çağırma yöntemini çağırarak bir GMSPlace
nesnesi iletir. Yer bulunamazsa yer nesnesi null olur.
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); } }];
iOS için Yerler Swift SDK'sı (Önizleme)
// 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 }
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
nesnesine yalnızca alan listesinde belirtilen alanlar doldurulur.
Açık durumu alma
GMSPlacesClient
nesnesi, çağrıda belirtilen saate göre yerin şu anda açık olup olmadığını belirten bir yanıt döndüren isOpenWithRequest
adlı bir üye işlevi (Swift'te isOpenRequest
ve GooglePlacesSwift'te isPlaceOpenRequest
) içerir.
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. Yer nesnesini gerekli alanlarla 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. Saat belirtilmezse varsayılan olarak şu anki saat kullanılır. - Yanıtı işleyen bir
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 iletiyorsanız yöntem bunları almak 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 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ı Yer Ayrıntıları (Gelişmiş) SKU'su kapsamında ücretlendirilir.GMSPlace
nesnenizde önceki bir istekten bu alanlar zaten varsa sizden tekrar ücret alınmaz.
Örnek: GMSPlaceIsOpenWithRequest
isteği gönderme
Aşağıdaki örnekte, mevcut bir GMSPlace
nesnesi içinde GMSPlaceIsOpenWithRequest
değerinin 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
Zorunlu 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ılanla aynı tanımlayıcıdır. Her yer kimliği yalnızca bir yeri referans alabilir 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şınırsa bu durumla karşılaşabilirsiniz.
Bir yer kimliği belirterek yer isteğinde bulunduğunuzda, yanıtta her zaman aynı yeri alacağınızdan emin olabilirsiniz (yer hâlâ mevcutsa). Ancak yanıtın, isteğinizdekinden farklı bir yer kimliği içerebileceğini unutmayın.
Alan listesi
Yer ayrıntılarını istediğinizde, yer için GMSPlace
nesnesinde döndürülecek verileri alan maskesi olarak belirtmeniz gerekir. Alan maskesini tanımlamak için GMSPlaceProperty
nesnesinden GMSFetchPlaceRequest
nesnesine bir değer dizisi iletin.
Alan maskeleme, gereksiz veri istemediğinizden emin olmak 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 en az birini belirtin:
Aşağıdaki alanlar Yer Ayrıntıları (Yalnızca Kimlik) SKU'sunu tetikler:
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
,GMSPlacePropertyPhotos
Aşağıdaki alanlar Yer Ayrıntıları (Yalnızca Konum) SKU'sunu tetikler:
GMSPlacePropertyAddressComponents
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyViewport
Aşağıdaki alanlar Yer Ayrıntıları (Temel) SKU'sunu tetikler:
GMSPlacePropertyBusinessStatus
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyWheelchairAccessibleEntrance
Aşağıdaki alanlar Yer Ayrıntıları (Gelişmiş) SKU'sunu tetikler:
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Aşağıdaki alanlar Yer Ayrıntıları (Tercih Edilen) 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ğerinin listesi iletilmektedir:
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];
iOS için Yerler Swift SDK'sı (Önizleme)
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
İ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. İki karakterli CLDR kodu değeri olarak belirtilir. Bu parametre, arama sonuçlarında da önyargı etkisi yaratabilir. Varsayılan değer yoktur.
Yanıttaki adres alanının ülke adı bölge koduyla eşleşirse ülke kodu adresten çıkarılır.
CLDR kodlarını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) 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ı, Otomatik Tamamlama (Yeni) çağrılarını "oturumlar" olarak izleyen, kullanıcı tarafından oluşturulan dizelerdir. Otomatik Tamamlama (Yeni), kullanıcı otomatik tamamlama aramasının sorgu ve yer seçim 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ını izleyen 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 fotoğraf ve yorumlar gibi bilgileri görüntülerken gerekli ilişkilendirmeleri de göstermelidir.
Örneğin, GMSPlacesClient
nesnesinin reviews
özelliği beş adede kadar GMSPlaceReview
nesnesi içeren bir dizi içerir. Her GMSPlaceReview
nesnesi ilişkilendirmeler ve yazar ilişkilendirmeleri içerebilir.
Yorumu uygulamanızda gösteriyorsanız ilişkilendirmeyi veya yazar ilişkilendirmesini de göstermeniz gerekir.
Daha fazla bilgi için ilişkilendirmeler hakkındaki dokümanları inceleyin.