Local atual

Selecione a plataforma: Android iOS

Com o SDK do Places para iOS, você pode descobrir o lugar onde o dispositivo está localizado no momento. Ou seja, o lugar no dispositivo do local informado no momento. Exemplos de lugares incluem empresas locais, pontos de interesse e localizações geográficas.

  1. Pedir autorização de localização
  2. Limites de uso
  3. Ver a localização atual
  4. Exibir atribuições no app

Solicitando autorização de localização

Caso seu app use GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, o app precisa solicitar permissão para usar os serviços de localização. Adicione o método NSLocationWhenInUseUsageDescription chave para seu Info.plist para definir a string que informa ao usuário por que você precisa da localização serviços. Exemplo:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Show your location on the map</string>

Se quiser ligar findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: quando app estiver em segundo plano, sem acionar uma caixa de diálogo de confirmação, siga estas etapas antes de fazer a chamada:

  1. Adicione a chave NSLocationAlwaysUsageDescription ao arquivo Info.plist.
  2. Chame requestAlwaysAuthorization em qualquer instância de CLLocationManager antes de chamar o método.

Solicite autorização de CLLocationManager da seguinte maneira:

Swift

    locationManager.requestAlwaysAuthorization()
    

Objective-C

    [self.locationManager requestAlwaysAuthorization];
    

Acessando a localização atual

Para encontrar a empresa local ou outro lugar onde o dispositivo está localizado, ligar GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: Incluir os seguintes parâmetros:

  • Um ou mais GMSPlaceFields, especificando quais tipos de dados para retornar. Se você omitir esse parâmetro, TODOS os campos possíveis serão retornados, e a cobrança será feita de acordo com isso. Isso se aplica apenas às solicitações do Place Details.
  • Um método de callback para lidar com os resultados.

Os campos correspondem aos resultados da Pesquisa de local e são divididos em três categorias de cobrança: "Basic", "Contact" e "Atmosphere". Os campos "Basic" são faturados na taxa básica e não geram cargas. Os campos "Contact" e "Atmosphere" são faturados em uma taxa maior. Para mais informações sobre como as solicitações de dados de lugar são faturadas, consulte Uso e faturamento.

A API invoca o método de retorno de chamada especificado, retornando uma matriz de GMSPlaceLikelihood objetos.

Cada GMSPlaceLikelihood objeto representa um local. Para cada lugar, o resultado inclui um indicação da probabilidade de o lugar ser o correto. Um valor mais alto significa uma probabilidade maior de que o lugar seja a melhor correspondência. A reserva pode ser vazio, se não houver um local conhecido correspondente à localização do dispositivo.

O exemplo de código a seguir recupera a lista de locais em que o dispositivo com mais probabilidade de ser localizado e registra o nome e a probabilidade de cada local.

Swift

// Specify the place data types to return.
let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
                                          UInt(GMSPlaceField.placeID.rawValue))!
placesClient?.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: fields, callback: {
  (placeLikelihoodList: Array<GMSPlaceLikelihood>?, error: Error?) in
  if let error = error {
    print("An error occurred: \(error.localizedDescription)")
    return
  }

  if let placeLikelihoodList = placeLikelihoodList {
    for likelihood in placeLikelihoodList {
      let place = likelihood.place
      print("Current Place name \(String(describing: place.name)) at likelihood \(likelihood.likelihood)")
      print("Current PlaceID \(String(describing: place.placeID))")
    }
  }
})

Objective-C

// Specify the place data types to return.
GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
[_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:fields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"An error occurred %@", [error localizedDescription]);
    return;
  }
  if (likelihoods != nil) {
    for (GMSPlaceLikelihood *likelihood in likelihoods) {
      GMSPlace *place = likelihood.place;
      NSLog(@"Current place name: %@", place.name);
      NSLog(@"Place ID: %@", place.placeID);
    }
  }
}];

Observações sobre os valores de probabilidade:

  • A probabilidade fornece uma probabilidade relativa do local sendo a melhor correspondência dentro da lista de locais retornados para uma com uma única solicitação. Não é possível comparar probabilidades entre solicitações diferentes.
  • O valor da probabilidade estará entre 0 e 1,0.
  • A soma das probabilidades em uma matriz retornada de GMSPlaceLikelihood é sempre menor ou igual a 1,0. Observe que a soma não é necessariamente 1,0.

Por exemplo, para representar uma probabilidade de 55% de que o lugar correto seja o Local A, e uma probabilidade de 35% de que seja o Lugar B, a matriz de probabilidade tem dois membros: Local A com uma probabilidade de 0,55 e Lugar B com probabilidade de 0,35.

Mostrar atribuições no app

Quando o app exibe informações recebidas de GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, o app também devem exibir atribuições. Leia mais sobre atribuições.