Yer Ayrıntıları

Platform seçin: Android iOS JavaScript Web Hizmeti

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:

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 üzere GMSOpeningHours.weekdayText işlevini çağırın. weekdayText tarafından sağlanan verilere eşdeğer daha ayrıntılı bilgiler içeren GMSPeriod'ların listesini döndürmek için GMSOpeningHours.Periods işlevini çağırın. Not: Bir yer her zaman açıksa zaman aralığı Pazar gece yarısı olarak temsil edilir ve closeEvent null olur.
  • currentOpeningHours ve secondaryOpeningHours: Bir yerin programında tatil ve geçici değişiklikleri dikkate alan alanlar.
  • addressComponents: Bir yerin adres bileşenlerini temsil eden GMSAddressComponent 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ğlayan formattedAddress ö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.
  • 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 ve UTCOffsetMinutes ile geçerli tarih ve saate göre bir yerin belirli bir zamanda açık olup olmadığını hesaplar.
  • isOpenAtDate openingHours ve UTCOffsetMinutes 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 saatleri openingHours ü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.