iOS için Yerler SDK'sı, 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ı
GMSPlace
sınıfı, belirli bir yer hakkında bilgi sağlar. Bir GMSPlace
nesneyi aşağıdaki şekillerde edinebilirsiniz:
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
numaralı telefonu arayın. Mevcut yeri alma ile ilgili kılavuzu inceleyin.GMSPlaceField
, yer kimliği ve geri çağırma yöntemi göndererekGMSPlacesClient fetchPlaceFromPlaceID:
'yi çağırın. Yer Ayrıntıları isteklerinde, istekte en az bir alan belirtmezseniz veyafields
parametresini istekten çıkarırsanız mümkün olan TÜM alanlar döndürülür ve buna göre faturalandırılırsınız. Noktaları kimliğe göre alma kılavuzunu inceleyin.
Bir yer isteğinde bulunurken döndürülecek yer verisi türlerini belirtmeniz gerekir. Bunu yapmak için döndürülecek veri türlerini belirten bir GMSPlaceField
gönderin. Bu, her istek için maliyeti etkileyeceğinden önemli bir husustur.
Yer verileri 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 photos
alanı sonuçta yer almaz).
Aşağıdaki örnekte, bir istek tarafından döndürülen verileri belirtmek için iki alan değerinin listesi iletilmektedir:
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 verileri isteklerinin nasıl faturalandırıldığı hakkında daha fazla bilgi için Kullanım ve Faturalandırma başlıklı makaleyi inceleyin.
GMSPlace
sınıfı aşağıdaki yer verilerini içerebilir:
name
: Yerin adı.editorialSummary
: Bir yerin açıklamasını sağlar.placeID
: Yerin metin olarak tanımlanmasıdır. Bu sayfanın geri kalanında yer kimlikleri hakkında daha fazla bilgi edinin.coordinate
: Enlem ve boylam koordinatları olarak belirtilen, yerin coğrafi konumu.phoneNumber
: Uluslararası standartta, işletmenin telefon numarası.formattedAddress
: Bu konumun kullanıcılar tarafından okunabilen adresi.Bu adres genellikle posta adresiyle aynıdır. Birleşik Krallık gibi bazı ülkelerde, lisanslama kısıtlamaları nedeniyle gerçek posta adreslerinin dağıtılmasına izin verilmediğini unutmayın.
Biçimlendirilmiş adres mantıksal olarak bir veya daha fazla adres bileşeninden oluşur. Örneğin, "111 8. Cadde, New York, NY" adresi şu bileşenlerden oluşur: "111" (bina numarası), "8. Cadde" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).
Biçimlendirilmiş adresi programatik olarak 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 gösterilir). Haftanın her günü için çalışma saatlerinin yerelleştirilmiş dizelerinin listesini almak üzereGMSOpeningHours.weekdayText
işlevini çağırın.weekdayText
tarafından sağlanan verilere eşdeğer daha ayrıntılı bilgiler içerenGMSPeriod
'ların listesini döndürmek içinGMSOpeningHours.Periods
işlevini çağırın. Not: Bir yer her zaman açıksa zaman aralığı Pazar gece yarısı olarak temsil edilir vecloseEvent
null olur.currentOpeningHours
vesecondaryOpeningHours
: Bir yerin programında tatil ve geçici değişiklikleri dikkate alan alanlar.addressComponents
: Bir yerin adres bileşenlerini temsil edenGMSAddressComponent
nesneleri dizisi. Bu bileşenler, bir yerin adresiyle ilgili yapılandırılmış bilgileri (ör. bir yerin bulunduğu şehri bulma) ayıklamak amacıyla sağlanır. Adres biçimlendirmesi için bu bileşenleri kullanmayın. Bunun yerine, yerelleştirilmiş biçimlendirilmiş bir adres sağlayanformattedAddress
özelliğini kullanın.addressComponents
dizisiyle ilgili aşağıdaki noktalara dikkat edin:- Adres bileşenleri dizisi,
formattedAddress
'ten daha fazla bileşen içerebilir. - Dizi,
formattedAddress
'e dahil olanlar dışında, adres içeren tüm siyasi varlıkları içermeyebilir. - Yanıtın biçiminin istekler arasında 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, dizindeki konumunu değiştirebilir. Bileşenin türü değişebilir. Belirli bir bileşen, daha sonraki bir yanıtta eksik olabilir.
- Adres bileşenleri dizisi,
userRatingsTotal
: Yerin puanını oluşturan yorum sayısını gösterir.
GMSPlace
sınıfı aşağıdaki üye işlevlerini içerir:
-
isOpen
,openingHours
veUTCOffsetMinutes
ile geçerli tarih ve saate göre bir yerin belirli bir zamanda açık olup olmadığını hesaplar. isOpenAtDate
openingHours
veUTCOffsetMinutes
ile geçerli tarih ve saate göre bir yerin belirli bir tarihte açık olup olmadığını hesaplar.
Açılış saatlerini ve/veya tarihleri almak için bu işlevler kullanılırken orijinal fetchPlaceFromPlaceID:
veya findPlaceLikelihoodsFromUserLocationWithPlaceFields:
isteğinde GMSPlaceFieldOpeningHours
ve GMSPlaceFieldUTCOffsetMinutes
alanlarının İKİSİ de belirtilmelidir. Bu alanların herhangi biri eksikse oluşturulan GMSPlace
nesnesi, çalışma saatlerini veya tarihleri içermez ve çağrı GMSPlaceOpenStatusUnknown
döndürür. Doğru sonuçlar elde etmek için orijinal yer isteğinizde GMSPlaceFieldBusinessStatus
ve GMSPlaceFieldUTCOffsetMinutes
alanlarını isteyin. İstenmezse işletmenin faaliyette olduğu varsayılır.
isOpen
'yi yer ayrıntılarıyla nasıl kullanacağınızı öğrenmek için bu videoyu izleyin.
Çalışma saatlerini özelleştirme
Normal çalışma saatleriopeningHours
üzerinden elde edilirken currentOpeningHours
ve secondaryOpeningHours
, tatil ve geçici program değişikliklerini destekler.
Bu özel günler için istisnai çalışma saatleri varsa filtrelenebilir ve sunulabilir.
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 tabanlı bir tanımlayıcıdır. iOS için Yerler SDK'sında, bir yerin kimliğini GMSPlace
nesnesinden alabilirsiniz. Yer kimliğini saklayabilir ve daha sonra GMSPlace
nesnesini almak için kullanabilirsiniz.
Kimliğe göre bir yer almak için aşağıdaki parametreleri ileterek GMSPlacesClient
fetchPlaceFromPlaceID:
işlevini çağırın:
- Yer kimliği içeren bir dize.
- Döndürülecek veri türlerini belirten bir veya daha fazla
GMSPlaceField
. - Arama, bir otomatik tamamlama sorgusunu tamamlamak için yapılıyorsa oturum jetonu. Aksi takdirde nil değerini iletin.
- Sonucu işleyen 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 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]); } }];
Uygulamanızda ilişkilendirmeleri gösterme
Uygulamanız GMSPlacesClient
lookUpPlaceID:callback:
kaynağından elde edilen bilgileri görüntülerken ilişkilendirmeleri de görüntülemelidir.
İlişkilendirmeler ile ilgili dokümanları inceleyin.
Yer kimlikleri hakkında daha fazla bilgi
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.
Daha fazla bilgi için yer kimliğine genel bakış bölümünü inceleyin.