Con el SDK de Places para iOS, puedes descubrir el lugar en el que se encuentra el dispositivo en un momento determinado. Es decir, el lugar en la ubicación actual informada del dispositivo. Algunos ejemplos de lugares son las empresas locales, los lugares de interés y las ubicaciones geográficas.
- Cómo solicitar la autorización de ubicación
- Límites de uso
- Cómo obtener la ubicación actual
- Cómo mostrar atribuciones en tu app
Cómo solicitar la autorización de ubicación
Si tu app usa
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, debe solicitar permiso para usar los servicios de ubicación. Agrega la clave NSLocationWhenInUseUsageDescription a tu archivo Info.plist para definir la cadena que informa al usuario por qué necesitas los servicios de ubicación. Por ejemplo:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
Si quieres llamar a
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: cuando la app está en segundo plano, sin activar un diálogo de confirmación, sigue estos pasos antes de realizar la llamada:
- Agrega la clave
NSLocationAlwaysUsageDescriptiona tu archivoInfo.plist. - Llama a
requestAlwaysAuthorizationen cualquier instancia deCLLocationManagerantes de llamar al método.
Solicita la autorización de CLLocationManager de la siguiente manera:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
Cómo obtener la ubicación actual
Para encontrar la empresa local o cualquier otro lugar en el que se encuentre el dispositivo, llama a GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Incluye
los siguientes parámetros:
- Uno o más objetos
GMSPlaceField, que especifican qué tipos de datos se deben devolver Si omites este parámetro, se devolverán TODOS los campos posibles y se te facturará en función de ello. Esto se aplica únicamente a las solicitudes de Place Details. - Es un método de devolución de llamada para controlar los resultados.
Los campos corresponden a los resultados de Place Search y se dividen en tres categorías de facturación: Basic, Contact y Atmosphere. Los campos de datos básicos se facturan con la tarifa base y no generan cargos adicionales. Los campos de datos de contacto y atmosféricos se facturan con una tarifa más alta. Si deseas consultar más detalles sobre cómo se facturan las solicitudes de datos de Places, consulta Uso y facturación.
La API invoca el método de devolución de llamada especificado y devuelve un array de objetos GMSPlaceLikelihood.
Cada objeto GMSPlaceLikelihood representa un lugar. Para cada lugar, el resultado incluye un indicador de la probabilidad de que el lugar sea el correcto. Un valor más alto
significa una mayor probabilidad de que el lugar sea la mejor coincidencia. El búfer puede estar vacío si no hay un lugar conocido que corresponda a la ubicación del dispositivo.
En la siguiente muestra de código, se recupera la lista de lugares en los que es más probable que se encuentre el dispositivo y se registran el nombre y la probabilidad de cada lugar.
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); } } }];
Notas sobre los valores de la probabilidad:
- La probabilidad proporciona una probabilidad relativa de que el lugar sea la mejor coincidencia dentro de la lista de lugares que se muestran para una sola solicitud. No puedes comparar las probabilidades entre diferentes solicitudes.
- El valor de la probabilidad estará entre 0 y 1,0.
- La suma de las probabilidades en un array de objetos
GMSPlaceLikelihooddevuelto siempre es menor o igual que 1.0. Ten en cuenta que la suma no es necesariamente 1.0.
Por ejemplo, para representar una probabilidad del 55% de que el lugar correcto sea el Lugar A y una probabilidad del 35% de que sea el Lugar B, el array de probabilidades tiene dos miembros: el Lugar A con una probabilidad de 0.55 y el Lugar B con una probabilidad de 0.35.
Cómo mostrar atribuciones en tu app
Cuando tu app muestra información obtenida de GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, también debe mostrar atribuciones. Obtén más información sobre las
atribuciones.