Yer Ayrıntıları (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti
Avrupa Ekonomik Alanı (AEA) geliştiricileri

iOS için Places SDK (Yeni), uygulamanıza yerlerle ilgili zengin bilgiler sağlar. Bu bilgiler arasında yerin 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ı yer alır. Belirli bir yerle ilgili bu bilgilere erişmek için yer kimliğini (bir yeri benzersiz şekilde tanımlayan sabit bir tanımlayıcı) kullanabilirsiniz.

Yer ayrıntılarını alma

GMSPlace sınıfı, Yer Veri Alanları (Yeni) bölümünde gösterilen tüm veri alanları dahil olmak üzere belirli bir yerle ilgili bilgileri içerir. GMSPlacesClient fetchPlaceWithRequest: yöntemini çağırarak, GMSFetchPlaceRequest nesnesi ve GMSPlaceResultCallback türünde bir geri çağırma yöntemi ileterek GMSPlace nesnesi alın.

GMSFetchPlaceRequest nesnesi şunları belirtir:

  • (Zorunlu) Google Places veritabanında ve Google Haritalar'da bir yerin benzersiz tanımlayıcısı olan yer kimliği.
  • (Zorunlu) GMSPlace nesnesinde döndürülecek alanların listesi. GMSPlaceProperty tarafından tanımlandığı şekilde alan maskesi olarak da adlandırılır. Alan listesinde en az bir alan belirtmezseniz veya alan listesini atlarsanız çağrı 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ğinde bulunma

Bu örnekte, aşağıdaki parametreler iletilerek kimliğe göre bir yer alınır:

  • ChIJV4k8_9UodTERU5KXbkYpSYs yer kimliği.
  • Yer adının ve web sitesi URL'sinin döndürülmesini belirten bir alan listesi.
  • Sonucu işlemek için GMSPlaceResultCallback kullanılır.

API, belirtilen geri çağırma yöntemini çağırarak GMSPlace nesnesini iletir. Yer bulunamazsa yer nesnesi nil olur.

Places Swift SDK'sı

// 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
}

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);
  }
}];

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 nesnesinde yalnızca alan listesinde belirtilen alanlar doldurulur.

Açık durumunu alma

GMSPlacesClient nesnesi, isOpenWithRequest adlı bir üye işlevi içerir (Swift'te isOpenRequest, GooglePlacesSwift'te isPlaceOpenRequest). Bu işlev, çağrıda belirtilen zamana göre yerin şu anda açık olup olmadığını belirten bir yanıt döndürür.

Bu yöntem, aşağıdakileri içeren GMSPlaceIsOpenWithRequest türünde tek bir bağımsız değişken alır:

  • Bir GMSPlace nesnesi veya bir yer kimliği belirten dize. Gerekli alanlarla yer nesnesi 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) veya Date (Swift) nesnesi. Herhangi bir saat belirtilmezse varsayılan olarak "şimdi" değeri kullanılır.
  • Yanıtı işlemek için 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 iletirseniz yöntem, bunları getirmek için GMSPlacesClient GMSFetchPlaceRequest: kullanır.

isOpenWithRequest yanıt

isOpenWithRequest, işletmenin açık veya kapalı olup olmadığını ya da durumun bilinmediğini belirten status adlı bir boole değeri içeren GMSPlaceIsOpenResponse nesnesi döndürür.

Dil Açık tutar Kapalıyken değer Durum bilinmiyorsa değer
Places Swift true false nil
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown

isOpenWithRequest için faturalandırma

  • GMSPlacePropertyUTCOffsetMinutes ve GMSPlacePropertyBusinessStatus alanları, Temel Veri SKU'su kapsamında ücretlendirilir. Çalışma saatlerinin geri kalanı Yer Ayrıntıları Enterprise SKU'su kapsamında ücretlendirilir.
  • GMSPlace nesnenizde önceki bir istekten gelen bu alanlar zaten varsa tekrar ücretlendirilmezsiniz.

Örnek: GMSPlaceIsOpenWithRequest isteğinde bulunma

Aşağıdaki örnekte, mevcut bir GMSPlace nesnesi içinde GMSPlaceIsOpenWithRequest değerinin nasıl başlatılacağı gösterilmektedir.

Places Swift SDK'sı

        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
        }
        

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
            }
          }];
          

Gerekli parametreler

Gerekli 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ılan tanımlayıcıyla aynıdır. Her yer kimliği yalnızca bir yeri ifade edebilir 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şındığında bu durum yaşanabilir.

Bir yer kimliği belirterek yer isteğinde bulunduğunuzda, yanıt olarak her zaman aynı yeri alacağınızdan emin olabilirsiniz (yer hala mevcutsa). Ancak yanıtın, isteğinizdeki yer kimliğinden farklı bir yer kimliği içerebileceğini unutmayın.

Alan listesi

Yer ayrıntılarını isterken, yer için GMSPlace nesnesinde döndürülecek verileri alan maskesi olarak belirtmeniz gerekir. Alan maskesini tanımlamak için GMSPlaceProperty değerlerinden oluşan bir diziyi GMSFetchPlaceRequest nesnesine iletin. Gereksiz veri istemediğinizden emin olmak için alan maskeleme iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresinden ve faturalandırma ücretlerinden kaçınabilirsiniz.

Aşağıdaki alanlardan birini veya daha fazlasını belirtin:

  • Aşağıdaki alanlar Place Details Essentials ID Only SKU'yu tetikler:

    GMSPlacePropertyPlaceID
    GMSPlacePropertyPhotos

  • Aşağıdaki alanlar Place Details Essentials SKU'sunu tetikler:

    GMSPlacePropertyAddressComponents
    GMSPlacePropertyFormattedAddress
    GMSPlacePropertyCoordinate
    GMSPlacePropertyPlusCode
    GMSPlacePropertyTypes
    GMSPlacePropertyViewport

  • Aşağıdaki alanlar Yer Ayrıntıları Pro SKU'sunu tetikler:

    GMSPlacePropertyBusinessStatus
    GMSPlacePropertyIconBackgroundColor
    GMSPlacePropertyIconImageURL
    GMSPlacePropertyName
    GMSPlacePropertyUTCOffsetMinutes
    GMSPlacePropertyWheelchairAccessibleEntrance

  • Aşağıdaki alanlar Yer Ayrıntıları Pro SKU'sunu tetikler:

    GMSPlacePropertyCurrentOpeningHours
    GMSPlacePropertySecondaryOpeningHours
    GMSPlacePropertyPhoneNumber
    GMSPlacePropertyPriceLevel
    GMSPlacePropertyRating
    GMSPlacePropertyOpeningHours
    GMSPlacePropertyUserRatingsTotal
    GMSPlacePropertyWebsite

  • Aşağıdaki alanlar Place Details Enterprise 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ğeri listesi iletilmektedir:

Places Swift SDK'sı

// Specify the place data types to return.
let fields: [PlaceProperty] = [.placeID, .displayName]
    

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];
  

İ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, iki karakterli CLDR kodu değeri olarak belirtilir. Bu parametre, arama sonuçları üzerinde de önyargı etkisi yaratabilir. Varsayılan değer yoktur.

Yanıtın adres alanındaki ülke adı, bölge koduyla eşleşiyorsa ülke kodu adresten çıkarılır.

Bazı önemli istisnalar dışında çoğu CLDR kodu, 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ı, kullanıcı tarafından oluşturulan ve otomatik tamamlama (yeni) çağrılarını "oturum" olarak izleyen dizelerdir. Otomatik Tamamlama (Yeni), kullanıcının otomatik tamamlama aramasıyla ilgili sorgu ve yer seçimi 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ından sonra gelen 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 bilgileri (ör. fotoğraflar ve yorumlar) gösterdiğinde gerekli atıfları da göstermelidir.

Örneğin, GMSPlacesClient nesnesinin reviews özelliği, en fazla beş GMSPlaceReview nesnesi dizisi içerir. Her GMSPlaceReview nesnesi, atıflar ve yazar atıfları içerebilir. Yorumu uygulamanızda gösteriyorsanız ilişkilendirme veya yazar ilişkilendirmesini de göstermeniz gerekir.

Daha fazla bilgi için ilişkilendirmeler hakkındaki belgelere göz atın.