Detalhes do lugar (novo)

Selecionar plataforma: Android iOS JavaScript Web Service
Desenvolvedores do Espaço Econômico Europeu (EEE)

O SDK do Places para iOS (nova geração) oferece ao seu app informações detalhadas sobre lugares, incluindo o nome e o endereço do local, a localização geográfica especificada como coordenadas de latitude/longitude, o tipo de lugar (como boate, pet shop, museu) e muito mais. Para acessar essas informações de um lugar específico, use o ID do lugar, um identificador estável que identifica um local de forma exclusiva.

Conferir detalhes sobre o lugar

A classe GMSPlace contém informações sobre um lugar específico, incluindo todos os campos de dados mostrados em Campos de dados de lugar (nova geração). Para receber um GMSPlace objeto, chame GMSPlacesClient fetchPlaceWithRequest:, transmitindo um GMSFetchPlaceRequest objeto e um método de callback do tipo GMSPlaceResultCallback.

O objeto GMSFetchPlaceRequest especifica:

  • (Obrigatório) O ID do lugar, um identificador exclusivo de um local no banco de dados do Google Places e no Google Maps.
  • (Obrigatório) A lista de campos a serem retornados no objeto GMSPlace, também chamada de máscara de campo, conforme definido por GMSPlaceProperty. Se você não especificar pelo menos um campo na lista de campos ou omitir a lista de campos, a chamada vai retornar um erro.
  • (Opcional) O código da região usado para formatar a resposta.
  • (Opcional) O token de sessão usado para encerrar uma sessão do Autocomplete (nova geração).

Fazer uma solicitação do Place Details

Este exemplo recebe um lugar por ID, transmitindo os seguintes parâmetros:

  • O ID do lugar ChIJV4k8_9UodTERU5KXbkYpSYs.
  • Uma lista de campos que especifica o nome do lugar e o URL do site a serem retornados.
  • Um GMSPlaceResultCallback para processar o resultado.

A API invoca o método de callback especificado, transmitindo um GMSPlace objeto. Se o local não for encontrado, o objeto de local é nulo.

SDK do Places para 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);
  }
}];

Resposta do Place Details

O Place Details retorna um GMSPlace objeto que contém detalhes sobre o lugar. Somente os campos especificados na lista de campos são preenchidos no objeto GMSPlace.

Ver status de abertura

O objeto GMSPlacesClient contém uma função de membro chamada isOpenWithRequest (isOpenRequest no Swift e isPlaceOpenRequest no GooglePlacesSwift) que retorna uma resposta indicando se o lugar está aberto no momento, com base no horário especificado na chamada.

Esse método usa um único argumento do tipo GMSPlaceIsOpenWithRequest que contém:

O método GMSPlaceIsOpenWithRequest exige que os seguintes campos sejam definidos no objeto GMSPlace:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

Se esses campos não forem fornecidos no objeto Place ou se você transmitir um ID de lugar, o método vai usar GMSPlacesClient GMSFetchPlaceRequest: para buscá-los.

Resposta isOpenWithRequest

isOpenWithRequest retorna um objeto GMSPlaceIsOpenResponse que contém um valor booleano chamado status que indica se a empresa está aberta, fechada ou se o status é desconhecido.

Idioma Valor se aberto Valor se fechado Valor se o status for desconhecido
Places Swift true false nil
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown

Faturamento de isOpenWithRequest

  • Os campos GMSPlacePropertyUTCOffsetMinutes e GMSPlacePropertyBusinessStatus são cobrados na SKU Basic Data. O restante do horário de funcionamento é cobrado na SKU Place Details Enterprise.
  • Se o objeto GMSPlace tiver esses campos de uma solicitação anterior, você não será cobrado novamente.

Exemplo: fazer uma solicitação GMSPlaceIsOpenWithRequest

O exemplo a seguir mostra como inicializar um GMSPlaceIsOpenWithRequest em um objeto GMSPlace existente.

SDK do Places para 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
            }
          }];
          

Parâmetros obrigatórios

Use o objeto GMSFetchPlaceRequest para especificar os parâmetros obrigatórios.

ID de lugar

O ID do lugar usado no SDK do Places para iOS é o mesmo identificador usado na API Places, no SDK do Places para Android e em outras APIs do Google. Cada ID de lugar pode se referir a apenas um lugar, mas um único lugar pode ter mais de um ID.

Há circunstâncias que podem fazer com que um lugar receba um novo ID. Por exemplo, isso pode acontecer se uma empresa se mudar para outra localidade.

Ao solicitar um lugar especificando um ID, você pode ter certeza de que sempre receberá o mesmo lugar na resposta (se ele ainda existir). No entanto, a resposta pode conter um ID de lugar diferente do que está na sua solicitação.

Lista de campos

Ao solicitar detalhes do lugar, você precisa especificar os dados a serem retornados no objeto GMSPlace para o lugar como uma máscara de campo. Para definir a máscara de campo, transmita uma matriz de valores de GMSPlaceProperty para o objeto GMSFetchPlaceRequest. A máscara de campo é uma boa prática de design para garantir que você não solicite dados desnecessários, o que ajuda a evitar tempo de processamento e cobranças desnecessárias.

Especifique um ou mais dos seguintes campos:

  • Os campos a seguir acionam a SKU Place Details Essentials ID Only:

    GMSPlacePropertyPlaceID
    GMSPlacePropertyPhotos

    Para uma lista completa de campos e as SKUs associadas, consulte Campos de dados de lugar (nova geração).

  • Os campos a seguir acionam a SKU Place Details Essentials:

    GMSPlacePropertyAddressComponents
    GMSPlacePropertyFormattedAddress
    GMSPlacePropertyCoordinate
    GMSPlacePropertyPlusCode
    GMSPlacePropertyTypes
    GMSPlacePropertyViewport

    Para uma lista completa de campos e as SKUs associadas, consulte Campos de dados de lugar (nova geração).

  • Os campos a seguir acionam a SKU Place Details Pro:

    GMSPlacePropertyBusinessStatus
    GMSPlacePropertyIconBackgroundColor
    GMSPlacePropertyIconImageURL
    GMSPlacePropertyName
    GMSPlacePropertyUTCOffsetMinutes
    GMSPlacePropertyWheelchairAccessibleEntrance

    Para uma lista completa de campos e as SKUs associadas, consulte Campos de dados de lugar (nova geração).

  • Os campos a seguir acionam a SKU Place Details Pro:

    GMSPlacePropertyCurrentOpeningHours
    GMSPlacePropertySecondaryOpeningHours
    GMSPlacePropertyPhoneNumber
    GMSPlacePropertyPriceLevel
    GMSPlacePropertyRating
    GMSPlacePropertyOpeningHours
    GMSPlacePropertyUserRatingsTotal
    GMSPlacePropertyWebsite

    Para uma lista completa de campos e as SKUs associadas, consulte Campos de dados de lugar (nova geração).

  • Os campos a seguir acionam a SKU Place Details Enterprise:

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

    Para uma lista completa de campos e as SKUs associadas, consulte Campos de dados de lugar (nova geração).

O exemplo a seguir transmite uma lista de dois valores de campo para especificar que o objeto GMSPlace retornado por uma solicitação contém os campos name e placeID:

SDK do Places para 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];
  

Parâmetros opcionais

Use o objeto GMSFetchPlaceRequest para especificar os parâmetros opcionais.

regionCode

O código da região usado para formatar a resposta, especificado como um valor de código CLDR de duas letras. Esse parâmetro também pode ter um efeito de viés nos resultados da pesquisa. Não há valor padrão.

Se o nome do país do campo de endereço na resposta corresponder ao código da região, o código do país será omitido do endereço.

A maioria dos códigos CLDR é idêntica aos códigos ISO 3166-1, com algumas exceções notáveis. Por exemplo, o ccTLD do Reino Unido é "uk" (.co.uk), enquanto o código ISO 3166-1 é "gb" (tecnicamente para a entidade do "Reino Unido da Grã-Bretanha e Irlanda do Norte"). O parâmetro pode afetar os resultados com base na legislação aplicável.

sessionToken

Os tokens de sessão são strings geradas pelo usuário que rastreiam chamadas do Autocomplete (nova geração) como "sessões". O Autocomplete (nova geração) usa tokens de sessão para agrupar as fases de consulta e seleção de lugar de uma pesquisa de preenchimento automático do usuário em uma sessão discreta para fins de faturamento. Os tokens de sessão são transmitidos para chamadas do Place Details (nova geração) que seguem as chamadas do Autocomplete (nova geração). Para mais informações, consulte Tokens de sessão.

Exibir atribuições no seu aplicativo

Quando o app mostra informações obtidas de GMSPlacesClient, como fotos e avaliações, ele também precisa mostrar as atribuições necessárias.

Por exemplo, a propriedade reviews do objeto GMSPlacesClient contém uma matriz de até cinco GMSPlaceReview objetos. Cada objeto GMSPlaceReview pode conter atribuições e atribuições de autor. Se você mostrar a avaliação no seu app, também precisará mostrar qualquer atribuição ou atribuição de autor.

Para mais informações, consulte a documentação sobre atribuições.