Yer Ayrıntıları

Platform seçin: Android iOS JavaScript Web Hizmeti

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:

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çin GMSOpeningHours.weekdayText yöntemini çağırın. weekdayText tarafından sağlanan verilere eşdeğer daha ayrıntılı bilgiler içeren bir GMSPeriod listesi döndürmek için GMSOpeningHours.Periods yöntemini çağırın. Not: Bir yer her zaman açıksa dönem pazar gece yarısı olarak temsil edilir ve closeEvent null olur.
  • currentOpeningHours ve secondaryOpeningHours – Bir yer için programda tatil ve geçici değişikliklerin yapıldığı alanlar.
  • addressComponents – Bir yerin adresinin bileşenlerini temsil eden GMSAddressComponent 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ğlayan formattedAddress ö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.
  • 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 ve UTCOffsetMinutes ile geçerli tarih ve saate göre hesaplar.
  • isOpenAtDate, bir yerin belirli bir tarihte açık olup olmadığını openingHours ve UTCOffsetMinutes 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 saatleri openingHours 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.