Szczegóły miejsca (nowość)

Pakiet Places SDK na iOS (nowość) dostarcza aplikacji rozbudowane informacje informacje o miejscach, w tym ich nazwę i adres, położenie geograficzne, lokalizacja określona za pomocą współrzędnych geograficznych, rodzaj miejsca (np. klub nocny, sklep zoologiczny, muzeum). Aby uzyskać dostęp do tych informacji dla konkretnego miejsca, możesz użyć identyfikatora miejsca, stałego identyfikatora, wskazuje miejsce.

Pobierz informacje o miejscu

GMSPlace class zawiera informacje o konkretnym miejscu, w tym wszystkie pola danych pokazane w Pola danych miejsc (nowe). Zdobądź GMSPlace obiekt przez wywołanie GMSPlacesClient fetchPlaceWithRequest:, przekazującego obiekt GMSFetchPlaceRequest oraz metoda wywołania zwrotnego typu GMSPlaceResultCallback.

Obiekt GMSFetchPlaceRequest określa:

  • (Wymagane) Identyfikator miejsca, czyli unikalny identyfikator miejsca w Miejscach Google. w bazie danych i w Mapach Google.
  • (Wymagane) Lista pól do zwrócenia w obiekcie GMSPlace, tzw. maska pola zdefiniowana przez GMSPlaceProperty Jeśli nie określisz co najmniej jednego pola na liście pól lub jeśli pominiesz listę pól, wywołanie zwróci błąd.
  • (Opcjonalnie) Kod regionu używany do formatowania odpowiedzi.
  • (Opcjonalnie) Token sesji używany do zakończenia sesji autouzupełniania (nowej).

Przesyłanie prośby o szczegóły miejsca

W tym przykładzie określamy miejsce za pomocą identyfikatora i przekazujemy następujące parametry:

  • Identyfikator miejsca: ChIJV4k8_9UodTERU5KXbkYpSYs.
  • Lista pól określająca zwracanie nazwy miejsca i adresu URL witryny.
  • GMSPlaceResultCallback obsługuje wynik.

Interfejs API wywołuje określoną metodę wywołania zwrotnego, przekazując atrybut GMSPlace obiektu. Jeśli miejsce nie zostanie znalezione, obiekt miejsca ma wartość nil.

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

Pakiet SDK Miejsc Swift na iOS (wersja przedpremierowa)

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

Odpowiedź dotycząca szczegółów miejsca

Szczegóły miejsca zwraca GMSPlace obiekt ze szczegółowymi informacjami o tym miejscu. W obiekcie GMSPlace są wypełniane tylko pola określone na liście pól.

Pobieranie stanu otwartości

Obiekt GMSPlacesClient zawiera funkcję członka o nazwie isOpenWithRequest (isOpenRequest w języku Swift i isPlaceOpenRequest w GooglePlacesSwift), która zwraca odpowiedź wskazującą, czy miejsce jest obecnie otwarte, zgodnie z czasem określonym w rozmowie.

Ta metoda przyjmuje jeden argument typu GMSPlaceIsOpenWithRequest, który zawiera:

  • Obiekt GMSPlace lub ciąg znaków określający identyfikator miejsca. Więcej informacji o tworzeniu obiektu Place z wymaganymi polami znajdziesz w artykule Szczegóły miejsca.
  • Opcjonalny obiekt NSDate (Obj-C) lub Date (Swift) określający godzinę, którą chcesz sprawdzić. Jeśli nie podasz żadnej godziny, domyślną wartością będzie teraz.
  • Metoda GMSPlaceOpenStatusResponseCallback do obsługi odpowiedzi.
  • &gt;
.

Metoda GMSPlaceIsOpenWithRequest wymaga ustawienia w obiekcie GMSPlace tych pól:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

Jeśli te pola nie są podane w obiekcie Place lub jeśli przekazujesz identyfikator miejsca, metoda używa GMSPlacesClient GMSFetchPlaceRequest: do ich pobrania.

isOpenWithRequest odpowiedź

isOpenWithRequest zwraca obiekt GMSPlaceIsOpenResponse zawierający wartość logiczną o nazwie status, która wskazuje, czy firma jest otwarta, zamknięta, czy też jej stan jest nieznany.

Język Wartość, jeśli otwarta Wartość w przypadku zamknięcia Wartość, jeśli stan jest nieznany
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown
GooglePlacesSwift (wersja testowa) true false nil

Płatności za usługę isOpenWithRequest

Przykład: wysłanie żądania GMSPlaceIsOpenWithRequest

Przykład poniżej pokazuje, jak zainicjować obiekt GMSPlaceIsOpenWithRequest w istniejącym obiekcie GMSPlace.

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

GooglePlacesSwift

          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
          }
          

Wymagane parametry

Użyj obiektu GMSFetchPlaceRequest, aby określić wymagane parametry.

Identyfikator miejsca

Identyfikator miejsca używany w pakiecie SDK Miejsc na iOS to ten sam identyfikator, który jest używany w interfejsie Places API w pakiecie SDK Places dla Androida i innych interfejsów API Google. Każdy identyfikator miejsca może odnosić się tylko do jednego miejsca, ale jedno miejsce może mieć ich więcej jeden identyfikator miejsca.

Istnieją okoliczności, które mogą spowodować, że dane miejsce otrzyma nowy identyfikator. Może się tak na przykład zdarzyć, gdy firma przeprowadzi się w nowe miejsce.

Zamawiając miejsce, podając jego identyfikator, masz pewność, że w odpowiedzi otrzymasz zawsze to samo miejsce (jeśli miejsce ). Pamiętaj jednak, że odpowiedź może zawierać identyfikator miejsca, który inny niż w prośbie.

Lista pól

W prośbie o podanie szczegółowych informacji o miejscu należy podać dane, które mają zwracany dla obiektu GMSPlace jako maska pola. Aby zdefiniować maskę pola przekazać tablicę wartości z argumentu GMSPlaceProperty do obiektu GMSFetchPlaceRequest. Maskowanie pól to sprawdzona metoda projektowania, która pozwala uniknąć żądania zbędnych danych, które pozwala uniknąć niepotrzebnego czasu przetwarzania i naliczania opłat.

Wypełnij co najmniej jedno z tych pól:

  • Te pola aktywują kod SKU szczegółów miejsca (tylko identyfikator):

    GMSPlacePropertyPlaceID, GMSPlacePropertyName, GMSPlacePropertyPhotos

  • Te pola aktywują kod SKU szczegółów miejsca (tylko lokalizacja):

    GMSPlacePropertyAddressComponents, GMSPlacePropertyFormattedAddress, GMSPlacePropertyCoordinate, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyViewport

  • Te pola aktywują kod SKU informacji o miejscu (podstawowe):

    GMSPlacePropertyBusinessStatus, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyWheelchairAccessibleEntrance

  • Te pola aktywują kod SKU szczegółów miejsca (zaawansowane):

    GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite

  • Te pola aktywują kod SKU szczegółów miejsca (preferowany):

    GMSPlacePropertyCurbsidePickup, GMSPlacePropertyDelivery, GMSPlacePropertyDineIn, GMSPlacePropertyEditorialSummary, GMSPlacePropertyReservable, GMSPlacePropertyReviews, GMSPlacePropertyServesBeer, GMSPlacePropertyServesBreakfast, GMSPlacePropertyServesBrunch, GMSPlacePropertyServesDinner, GMSPlacePropertyServesLunch, GMSPlacePropertyServesVegetarianFood, GMSPlacePropertyServesWine, GMSPlacePropertyTakeout

Poniższy przykład przekazuje listę 2 wartości pól aby wskazać, że obiekt GMSPlace zwrócony przez żądanie zawiera name i placeID pola:

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

Pakiet SDK Miejsc Swift na iOS (wersja przedpremierowa)

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

Parametry opcjonalne

Aby określić opcjonalne parametry, użyj obiektu GMSFetchPlaceRequest.

regionCode

Kod regionu używany do formatowania odpowiedzi podany jako dwuznakową wartość kodu CLDR. Ten parametr może też wpływać na wyniki wyszukiwania. Nie ma wartości domyślnej.

Jeśli nazwa kraju w polu adresu w odpowiedzi jest zgodna z kodu regionu, kod kraju został pominięty w adresie.

Większość kodów CLDR jest identyczna z kodami ISO 3166-1. z kilkoma istotnymi wyjątkami. Na przykład domena ccTLD Wielkiej Brytanii to „uk” (co.uk), natomiast kod ISO 3166-1 to „gb”. (technicznie dla funkcji podmiotu „Wielkiej Brytanii i Irlandii Północnej”). Ten parametr może wpływać na wyniki w zależności od obowiązującego prawa.

sessionToken

Tokeny sesji to generowane przez użytkownika ciągi znaków, które śledzą autouzupełnianie (Nowe) jako „sesje”. Autouzupełnianie (nowa wersja) używa tokenów sesji, aby grupować fazy zapytania i wyboru miejsca w autouzupełnianiu wyszukiwania użytkownika w oddzielną sesję na potrzeby rozliczeń. Tokeny sesji są przekazywane do szczegółów miejsca (nowe) połączeń, które są następstwem nowych połączeń autouzupełniania. Więcej informacji: Tokeny sesji.

Wyświetl atrybucję w swojej aplikacji

Kiedy aplikacja wyświetla informacje uzyskane z: GMSPlacesClient takich jak zdjęcia i opinie, aplikacja musi też wyświetlać wymagane informacje o źródłach.

Na przykład właściwość reviews obiektu GMSPlacesClient zawiera tablicę złożoną z maks. pięciu GMSPlaceReview. obiektów. Każdy obiekt GMSPlaceReview może zawierać informacje o atrybucji lub autorach. Jeśli wyświetlasz opinię w aplikacji, musisz też podać informacje o autorze i pochodzeniu danych o pochodzeniu danych.

Więcej informacji znajdziesz w dokumentacji na temat atrybucje.