iOS için Yerler SDK'sı, uygulamanıza yerin adı ve adresi, enlem/boylam koordinatları olarak belirtilen coğrafi konum, yer türü (gece kulübü, evcil hayvan mağazası, müze gibi) gibi yerler hakkında zengin bilgiler sağlar. Belirli bir yerle ilgili bu bilgilere erişmek için, bir yeri benzersiz şekilde tanımlayan sabit bir tanımlayıcı olan yer kimliğini kullanabilirsiniz.
Yer ayrıntıları
GMSPlace
sınıfı, belirli bir yer hakkında bilgi sağlar. Bir GMSPlace
nesnesini aşağıdaki şekillerde tutabilirsiniz:
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
numaralı telefonu arayın. Mevcut yeri edinme kılavuzunu inceleyin.GMSPlaceField
, yer kimliği ve geri çağırma yöntemi ileterekGMSPlacesClient fetchPlaceFromPlaceID:
yöntemini çağırın. Yer Ayrıntısı istekleri için istek içeren en az bir alan belirtmezseniz veya bir istektenfields
parametresini çıkarırsanız mümkün olan TÜM alanlar döndürülür ve bu doğrultuda faturalandırılırsınız. Kimliğe göre yer alma kılavuzunu inceleyin.
Bir yer isteğinde bulunduğunuzda, döndürülecek yer verisi türlerini
belirtmeniz gerekir. Bunu yapmak için döndürülecek veri türlerini belirterek bir GMSPlaceField
iletin. Her isteğin maliyetini etkileyeceği için bu önemli bir husustur.
Yer verisi sonuçları boş olamayacağından, yalnızca veri içeren yer sonuçları döndürülür (örneğin, istenen bir yerde fotoğraf yoksa sonuçta photos
alanı yer almaz).
Aşağıdaki örnekte, bir istek tarafından döndürülen verileri belirtmek için iki alan değerinden oluşan bir liste geçirilmektedir:
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
Yer alanları hakkında daha fazla bilgi edinin. Yer verisi isteklerinin nasıl faturalandırıldığı hakkında daha fazla bilgi için Kullanım ve Faturalandırma bölümüne bakın.
GMSPlace
sınıfı aşağıdaki yer verilerini içerebilir:
name
– Yerin adı.editorialSummary
– Bir yerle ilgili basit bir açıklama sunar.placeID
– Yer için metinsel tanımlayıcıdır. Bu sayfanın geri kalanında yer kimlikleri hakkında daha fazla bilgi edinin.coordinate
– Yerin enlem ve boylam koordinatları olarak belirtilen coğrafi konumu.phoneNumber
– Yerin, uluslararası standarttaki telefon numarası.formattedAddress
– Bu konumun kullanıcılar tarafından okunabilen adresi.Bu adres çoğu zaman posta adresine eşdeğerdir. Birleşik Krallık gibi bazı ülkelerde lisanslama kısıtlamaları nedeniyle gerçek posta adreslerinin dağıtımına izin verilmediğini hatırlatmak isteriz.
Biçimlendirilmiş adres, mantıksal olarak bir veya daha fazla adres bileşeninden oluşur. Örneğin, "111 8th Avenue, New York, NY" adresi şu bileşenlerden oluşur: "111" (sokak numarası), "8th Avenue" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).
Biçimlendirilmiş adresi programlı bir şekilde ayrıştırmayın. Bunun yerine, API yanıtının biçimlendirilmiş adres alanına ek olarak içerdiği bağımsız adres bileşenlerini kullanmanız gerekir.
openingHours
– Yerin çalışma saatleri (GMSOpeningHours
ile temsil edildiği şekilde). Haftanın günlük çalışma saatlerinin yerelleştirilmiş dizelerinin listesini almak içinGMSOpeningHours.weekdayText
yöntemini çağırın.weekdayText
tarafından sağlanan verilere eşdeğer daha ayrıntılı bilgiler içeren birGMSPeriod
listesi döndürmek içinGMSOpeningHours.Periods
yöntemini çağırın. Not: Bir yer her zaman açıksa dönem pazar gece yarısı olarak temsil edilir vecloseEvent
null olur.currentOpeningHours
vesecondaryOpeningHours
– Bir yer için programda tatil ve geçici değişikliklerin yapıldığı alanlar.addressComponents
– Bir yerin adresinin bileşenlerini temsil edenGMSAddressComponent
nesne dizisi. Bu bileşenler, bir yerin adresi hakkında yapılandırılmış bilgileri çıkarmak için (ör. bir yerin bulunduğu şehri bulmak) sağlanır. Adres biçimlendirme için bu bileşenleri kullanmayın. Bunun yerine, yerelleştirilmiş adres sağlayanformattedAddress
özelliğini kullanın.addressComponents
dizisiyle ilgili aşağıdaki bilgilere dikkat edin:- Adres bileşenleri dizisi,
formattedAddress
seçeneğinden daha fazla bileşen içerebilir. - Dizi,
formattedAddress
özelliğindekiler dışında bir adres içeren tüm siyasi varlıkları içermez. - İstekler arasında yanıt biçiminin aynı kalacağı garanti edilmez. Özellikle,
addressComponents
sayısı istenen adrese göre değişir ve aynı adres için zaman içinde değişebilir. Bir bileşen, dizideki konumu değiştirebilir. Bileşenin türü değişebilir. Daha sonraki bir yanıtta belirli bir bileşen eksik olabilir.
- Adres bileşenleri dizisi,
userRatingsTotal
– Yerin puanının kaç yorumdan oluştuğunu gösterir.
GMSPlace
sınıfı aşağıdaki üye işlevlerini içerir:
-
isOpen
, bir yerin belirli bir zamanda açık olup olmadığınıopeningHours
veUTCOffsetMinutes
ile geçerli tarih ve saate göre hesaplar. isOpenAtDate
, bir yerin belirli bir tarihte açık olup olmadığınıopeningHours
veUTCOffsetMinutes
ile geçerli tarih ve saati temel alarak hesaplar.
Açılış saatlerini ve/veya tarihlerini almak için bu işlevleri kullanırken orijinal fetchPlaceFromPlaceID:
veya findPlaceLikelihoodsFromUserLocationWithPlaceFields:
isteğinin HEM GMSPlaceFieldOpeningHours
hem de GMSPlaceFieldUTCOffsetMinutes
alanlarını belirtmesi gerekir. Bu alanlardan biri eksikse sonuçta ortaya çıkan GMSPlace
nesnesi, açılış saatlerini veya tarihleri içermez ve çağrı GMSPlaceOpenStatusUnknown
değerini döndürür. Doğru sonuçlar elde etmek için orijinal yer isteğinizdeki GMSPlaceFieldBusinessStatus
ve GMSPlaceFieldUTCOffsetMinutes
alanlarını isteyin. İstenmezse işletmenin faaliyette olduğu varsayılır.
isOpen
öğesinin Yer Ayrıntıları ile nasıl kullanılacağını öğrenmek için bu videoyu izleyin.
Olağanüstü çalışma saatleri alın
Normal çalışma saatleriopeningHours
itibarıyla sağlanırken, currentOpeningHours
ve secondaryOpeningHours
tatil dönemleri ve geçici program değişiklikleri desteklenir.
Bu özel günlere ait özel çalışma saatleri filtrelenebilir ve varsa gösterilebilir.
Swift
func examineOpeningHours(place: GMSPlace) { // Check if the current opening hours contains a special day that has exceptional hours guard let currentOpeningHours = place.currentOpeningHours else { return } if let specialDays = currentOpeningHours.specialDays { guard !specialDays.isEmpty else { return } if let specialDay = specialDays.filter { $0.isExceptional }.first { // Indicate exceptional hours } } // Check if current opening hours contains a truncated time period let periods = currentOpeningHours.periods if !periods.isEmpty { for period in periods { let open = period.open let close = period.close if let open = open { let date = open.date if open.isTruncated { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available let secondaryOpeningHours = place.secondaryOpeningHours guard let hoursType = secondaryOpeningHours.first?.hoursType else { return } if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Objective-C
- (void)examineOpeningHours:(GMSPlace *) place { // Check if the current opening hours contains a special day that has exceptional hours GMSOpeningHours *currentOpeningHours = place.currentOpeningHours; if (currentOpeningHours != nil) { NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays; if ([specialDays count] != 0) { for (GMSPlaceSpecialDay *specialDay in specialDays) { NSDate *date = specialDay.date; if ([specialDay isExceptional]) { // Indicate exceptional hours } } } } // Check if current opening hours contains a truncated time period NSArray <GMSPeriod *> * periods = currentOpeningHours.periods; if ([periods count] != 0) { for (GMSPeriod * period in periods) { GMSTimeOfWeek *open = period.open; GMSTimeOfWeek *close = period.close; if (open) { if ([open isTruncated]) { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours; GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType; if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Kimliğe göre yer alma
Yer kimliği, bir yeri benzersiz şekilde tanımlayan metin biçimli bir tanımlayıcıdır. iOS için Yerler SDK'sında bir yerin kimliğini GMSPlace
nesnesinden alabilirsiniz. Yer kimliğini depolayabilir ve GMSPlace
nesnesini daha sonra tekrar almak için kullanabilirsiniz.
Bir yeri kimliğe göre almak için aşağıdaki parametreleri ileterek GMSPlacesClient
fetchPlaceFromPlaceID:
çağrısı yapın:
- Yer Kimliği içeren bir dize.
- Döndürülecek veri türlerini belirten bir veya daha fazla
GMSPlaceField
. - Otomatik tamamlama sorgusunu sonlandırmak için çağrı yapılırsa oturum jetonu. Aksi takdirde geçersiz sayılır.
- Sonucu işlemek için
GMSPlaceResultCallback
.
API, bir GMSPlace
nesnesi ileterek, belirtilen geri çağırma yöntemini çağırır. Yer bulunamazsa, yer nesnesi boştur.
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
İlişkilendirmeleri uygulamanızda gösterme
Uygulamanız, GMSPlacesClient
lookUpPlaceID:callback:
'ten alınan bilgileri gösterdiğinde ilişkilendirmeleri de göstermelidir.
İlişkilendirmeler ile ilgili dokümanlara bakın.
Yer kimlikleri hakkında daha fazla bilgi
iOS için Yerler SDK'sında kullanılan yer kimliği, Places API, Places SDK for Android ve diğer Google API'lerinde kullanılan tanımlayıcıyla aynıdır.
Her yer kimliği yalnızca bir yeri belirtebilir ancak tek bir yerin birden fazla yer kimliği olabilir.
Bir yerin yeni bir yer kimliği almasına neden olabilecek bazı durumlar vardır. Örneğin bu durum, işletme yeni bir konuma taşınırsa yaşanabilir.
Bir yer kimliği belirterek bir yer isteğinde bulunduğunuzda yanıtta her zaman aynı yeri (yer hâlâ mevcutsa) alacağınızdan emin olabilirsiniz. Ancak yanıtın, isteğinizdekinden farklı bir yer kimliği içerebileceğini unutmayın.
Daha fazla bilgi için yer kimliğine genel bakış konusuna göz atın.