Con el SDK de Places para iOS, puedes descubrir la ubicación en la que se encuentra el dispositivo en este momento. Es decir, el lugar en el que se encuentra ubicación informada actualmente. Algunos ejemplos de lugares incluyen empresas locales, lugares de interés y ubicaciones geográficas.
- Cómo solicitar una autorización de ubicación
- Límites de uso
- Cómo obtener la ubicación actual
- Mostrar atribuciones en tu aplicación
Cómo solicitar una autorización de ubicación
Si tu app usa
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
,
tu app debe solicitar permiso para usar los servicios de ubicación. Agrega el
Clave de NSLocationWhenInUseUsageDescription
para tu Info.plist
para definir la cadena que informa al usuario por qué necesitas la ubicación
de Google Cloud. Por ejemplo:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
Si quieres llamar
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
cuando
que la app esté en segundo plano, sin activar un diálogo de confirmación,
los siguientes pasos antes de realizar la llamada:
- Agrega la clave
NSLocationAlwaysUsageDescription
a tu archivoInfo.plist
. - Llama a
requestAlwaysAuthorization
en cualquier instancia deCLLocationManager
. antes de llamar al método.
Solicita autorización de CLLocationManager
de la siguiente manera:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
Obteniendo la ubicación actual
Para encontrar la empresa local o cualquier otro lugar donde se encuentre el dispositivo
localizado, llamar
GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
Incluir
los siguientes parámetros:
- Uno o más
GMSPlaceField
que especifican los tipos de datos para regresar. Si omites este parámetro, se devolverán TODOS los campos posibles y se te facturará según corresponda. Esto solo se aplica a las solicitudes de Place Details. - 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 la tarifa Basic se facturan con la tarifa base y no generan costos cargos. Los campos de datos de contacto y atmosféricos se facturan con una tarifa más alta. Más información 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 muestra un array de
GMSPlaceLikelihood
objetos.
Cada
GMSPlaceLikelihood
que representa un lugar. Para cada lugar, el resultado incluye una
una indicación 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. Es posible que el tiempo de reserva
estará vacío si no existe ningún lugar conocido que corresponda a la ubicación del dispositivo.
La siguiente muestra de código recupera la lista de lugares donde se encuentra el dispositivo y registra 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 que es la mejor coincidencia en la lista de lugares devueltos para una en una sola solicitud. No puedes comparar las probabilidades entre solicitudes diferentes.
- El valor de la probabilidad estará entre 0 y 1,0.
- La suma de las probabilidades en un array devuelto de
GMSPlaceLikelihood
siempre es menor o igual que 1.0. Ten en cuenta que la suma necesariamente 1,0.
Por ejemplo, para representar una probabilidad del 55% de que el lugar correcto sea el Sitio A, y una probabilidad del 35% de que sea el lugar B, el array de probabilidades tiene dos miembros: Lugar A con una probabilidad de 0.55 y Sitio B con una probabilidad de 0.35.
Cómo mostrar atribuciones en tu aplicación
Cuándo muestra la app información obtenida de
GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, la app
también deben mostrar atribuciones. Más información sobre
atribuciones.