Com o SDK do Places para iOS, você pode descobrir onde o dispositivo está localizado no momento. Ou seja, o lugar na localização informada pelo dispositivo no momento. Exemplos de lugares incluem empresas locais, pontos de interesse e localizações geográficas.
- Solicitar autorização de localização
- Limites de uso
- Ver a localização atual
- Exibir atribuições no app
Como solicitar autorização de localização
Se o app usa
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
,
ele precisa solicitar permissão para usar os Serviços de localização. Adicione a chave NSLocationWhenInUseUsageDescription
ao arquivo Info.plist
para definir a string que informa ao usuário por que você precisa dos serviços de localização. Exemplo:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
Se você quiser chamar
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
quando
o app estiver em segundo plano, sem acionar uma caixa de diálogo de confirmação, siga
as seguintes etapas antes de fazer a chamada:
- Adicione a chave
NSLocationAlwaysUsageDescription
ao seu arquivoInfo.plist
. - Chame
requestAlwaysAuthorization
em qualquer instância deCLLocationManager
antes de chamar o método.
Solicite autorização de CLLocationManager
da seguinte maneira:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
Como acessar o local atual
Para encontrar a empresa local ou outro lugar onde o dispositivo está localizado, chame GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
. Inclua os seguintes parâmetros:
- Uma ou mais
GMSPlaceField
s, especificando quais tipos de dados 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 a solicitações de Place Details. - Um método de callback para processar os resultados.
Os campos correspondem aos resultados do Place Search e são divididos em três categorias de faturamento: "Basic", "Contact" e "Atmosphere". Os campos básicos são faturados pela taxa básica e não geram cobranças extras. Os campos "Contact" e "Atmosphere" têm 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 callback especificado, retornando uma matriz de objetos GMSPlaceLikelihood
.
Cada objeto GMSPlaceLikelihood
representa um lugar. Para cada lugar, o resultado inclui uma indicação da probabilidade de que o lugar seja o correto. Um valor maior significa uma maior probabilidade de que o lugar seja a melhor correspondência. O buffer poderá
estar 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 provavelmente está localizado e registra o nome e a probabilidade de cada um.
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 indica a probabilidade relativa de o local ser a melhor correspondência na lista de locais retornados para uma única solicitação. Não é possível comparar as probabilidades em solicitações diferentes.
- O valor da probabilidade estará entre 0 e 1,0.
- A soma das probabilidades em uma matriz retornada de objetos
GMSPlaceLikelihood
é sempre menor ou igual a 1.0. A soma é necessariamente 1,0.
Por exemplo, para representar uma probabilidade de 55% de que o lugar correto seja o lugar A e uma probabilidade de 35% de que seja o lugar B, a matriz de probabilidade tem dois membros: lugar A com uma probabilidade de 0,55 e lugar B com uma probabilidade de 0,35.
Como exibir atribuições no app
Quando seu app exibe informações coletadas de
GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, ele
também precisa exibir atribuições. Leia mais sobre
atribuições.