Szczegóły miejsca (nowość)

Wybierz platformę: Android iOS JavaScript Web Service
Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Pakiet SDK Miejsc na iOS (nowy) udostępnia aplikacji bogate informacje o miejscach, w tym nazwę i adres miejsca, lokalizację geograficzną określoną jako współrzędne geograficzne, typ miejsca (np. klub nocny, sklep zoologiczny, muzeum) i inne. Aby uzyskać dostęp do tych informacji o konkretnym miejscu, możesz użyć identyfikatora miejsca, czyli stałego identyfikatora, który jednoznacznie identyfikuje miejsce.

Pobieranie informacji o miejscu

Klasa GMSPlace zawiera informacje o konkretnym miejscu, w tym wszystkie pola danych widoczne w sekcji Pola danych o miejscach (nowe). Aby uzyskać obiekt GMSPlace , wywołaj metodę GMSPlacesClient fetchPlaceWithRequest:, przekazując obiekt GMSFetchPlaceRequest i metodę wywołania zwrotnego typu GMSPlaceResultCallback.

Obiekt GMSFetchPlaceRequest określa:

  • (Wymagane) Identyfikator miejsca, czyli unikalny identyfikator miejsca w bazie danych Miejsc Google i na Mapach Google.
  • (Wymagane) Listę pól, które mają zostać zwrócone w obiekcie GMSPlace, nazywaną też maską pola, zgodnie z definicją GMSPlaceProperty. Jeśli nie określisz co najmniej 1 pola na liście pól lub 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 (nowego).

Wysyłanie żądania informacji o miejscu

Ten przykład pobiera miejsce według identyfikatora, przekazując te parametry:

  • Identyfikator miejsca ChIJV4k8_9UodTERU5KXbkYpSYs.
  • Lista pól określająca, że mają zostać zwrócone nazwa miejsca i adres URL witryny.
  • A GMSPlaceResultCallback do obsługi wyniku.

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

Pakiet SDK Miejsc na Swift

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

Odpowiedź z informacjami o miejscu

Informacje o miejscu zwracają obiekt GMSPlace zawierający szczegółowe informacje o miejscu. W obiekcie GMSPlace są wypełniane tylko te pola, które zostały określone na liście pól.

Pobieranie stanu otwarcia

Obiekt GMSPlacesClient zawiera funkcję składową o nazwie isOpenWithRequest (isOpenRequest w Swift i isPlaceOpenRequest w GooglePlacesSwift), która zwraca odpowiedź wskazującą, czy miejsce jest obecnie otwarte, na podstawie czasu określonego w wywołaniu.

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

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

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

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

Odpowiedź isOpenWithRequest

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

Język Wartość, jeśli miejsce jest otwarte Wartość, jeśli miejsce jest zamknięte Wartość, jeśli stan jest nieznany
Places Swift true false nil
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown

Płatności za isOpenWithRequest

  • Pola GMSPlacePropertyUTCOffsetMinutes i GMSPlacePropertyBusinessStatus są rozliczane w ramach jednostki SKU Podstawowe dane. Pozostałe godziny otwarcia są rozliczane w ramach jednostki SKU Informacje o miejscu w wersji Enterprise.
  • Jeśli obiekt GMSPlace już zawiera te pola z poprzedniego żądania, nie zostaną naliczone dodatkowe opłaty.

Przykład: wysyłanie żądania GMSPlaceIsOpenWithRequest

Ten przykład pokazuje, jak zainicjować GMSPlaceIsOpenWithRequest w istniejącym obiekcie GMSPlace.

Pakiet SDK Miejsc na Swift

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

Wymagane parametry

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

Identyfikator miejsca

Identyfikator miejsca używany w pakiecie SDK Miejsc na iOS jest taki sam jak identyfikator używany w interfejsie Places API, pakiecie SDK Miejsc na Androida i innych interfejsach API Google. Każdy identyfikator miejsca może odwoływać się tylko do 1 miejsca, ale 1 miejsce może mieć więcej niż 1 identyfikator.

W pewnych okolicznościach miejsce może otrzymać nowy identyfikator. Może się to zdarzyć na przykład wtedy, gdy firma przeniesie się do nowej lokalizacji.

Gdy poprosisz o miejsce, podając jego identyfikator, możesz mieć pewność, że w odpowiedzi zawsze otrzymasz to samo miejsce (jeśli nadal istnieje). Pamiętaj jednak, że odpowiedź może zawierać identyfikator miejsca, który różni się od identyfikatora w Twoim żądaniu.

Lista pól

Gdy prosisz o informacje o miejscu, musisz określić dane, które mają zostać zwrócone w obiekcie GMSPlace dla tego miejsca, jako maskę pola. Aby zdefiniować maskę pola, przekaż tablicę wartości z GMSPlaceProperty do obiektu GMSFetchPlaceRequest. Maskowanie pól to dobra praktyka projektowania, która pozwala uniknąć żądania niepotrzebnych danych, co pomaga uniknąć niepotrzebnego czasu przetwarzania i opłat.

Określ co najmniej 1 z tych pól:

  • Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Essentials – tylko identyfikator:

    GMSPlacePropertyPlaceID
    GMSPlacePropertyPhotos

    Pełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).

  • Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Essentials:

    GMSPlacePropertyAddressComponents
    GMSPlacePropertyFormattedAddress
    GMSPlacePropertyCoordinate
    GMSPlacePropertyPlusCode
    GMSPlacePropertyTypes
    GMSPlacePropertyViewport

    Pełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).

  • Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Pro:

    GMSPlacePropertyBusinessStatus
    GMSPlacePropertyIconBackgroundColor
    GMSPlacePropertyIconImageURL
    GMSPlacePropertyName
    GMSPlacePropertyUTCOffsetMinutes
    GMSPlacePropertyWheelchairAccessibleEntrance

    Pełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).

  • Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Pro:

    GMSPlacePropertyCurrentOpeningHours
    GMSPlacePropertySecondaryOpeningHours
    GMSPlacePropertyPhoneNumber
    GMSPlacePropertyPriceLevel
    GMSPlacePropertyRating
    GMSPlacePropertyOpeningHours
    GMSPlacePropertyUserRatingsTotal
    GMSPlacePropertyWebsite

    Pełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).

  • Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Enterprise:

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

    Pełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).

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

Pakiet SDK Miejsc na Swift

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

Parametry opcjonalne

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

regionCode

Kod regionu używany do formatowania odpowiedzi, określony jako 2-znakowa 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 pasuje do kodu regionu, kod kraju jest pomijany w adresie.

Większość kodów CLDR jest identyczna z kodami ISO 3166-1, z kilkoma istotnymi wyjątkami. Na przykład ccTLD Wielkiej Brytanii to „uk” (.co.uk), a jej kod ISO 3166-1 to „gb” (technicznie dla jednostki „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”). Ten parametr może wpływać na wyniki na podstawie obowiązujących przepisów.

sessionToken

Tokeny sesji to generowane przez użytkownika ciągi znaków, które śledzą wywołania autouzupełniania (nowego) jako „sesje”. Autouzupełnianie (nowe) używa tokenów sesji do grupowania fazy zapytania i wyboru miejsca w wyszukiwaniu autouzupełniania użytkownika w oddzielną sesję na potrzeby rozliczeń. Tokeny sesji są przekazywane do wywołań informacji o miejscu (nowych), które następują po wywołaniach autouzupełniania (nowego). Więcej informacji znajdziesz w sekcji Tokeny sesji.

Wyświetlanie atrybucji w aplikacji

Gdy aplikacja wyświetla informacje uzyskane z GMSPlacesClient, takie jak zdjęcia i opinie, musi też wyświetlać wymagane atrybucje.

Na przykład właściwość reviews obiektu GMSPlacesClient zawiera tablicę maksymalnie 5 GMSPlaceReview obiektów. Każdy obiekt GMSPlaceReview może zawierać atrybucje i atrybucje autora. Jeśli wyświetlasz opinię w aplikacji, musisz też wyświetlić atrybucję lub atrybucję autora.

Więcej informacji znajdziesz w dokumentacji dotyczącej atrybucji.