Current Place

Seleccionar plataforma: Android iOS

Con el SDK de Places para iOS, puedes descubrir dónde se encuentra actualmente el dispositivo. Es decir, el lugar de la ubicación actual del dispositivo. Algunos ejemplos de lugares incluyen empresas locales, lugares de interés y ubicaciones geográficas.

  1. Solicitar autorización de ubicación
  2. Límites de uso
  3. Obtén la ubicación actual
  4. Cómo mostrar atribuciones en tu app

Solicitud de 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 string 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 deseas 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:

  1. Agrega la clave NSLocationAlwaysUsageDescription a tu archivo Info.plist.
  2. Llama a requestAlwaysAuthorization en cualquier instancia de CLLocationManager 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 algún otro lugar en el que se encuentra el dispositivo actualmente, llama a GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Incluye los siguientes parámetros:

  • Uno o más GMSPlaceField, que especifican qué tipos de datos mostrar. Si omites este parámetro, se mostrarán TODOS los campos posibles y se te facturará según corresponda. Esto se aplica solo a las solicitudes de Place Details.
  • Un método de devolución de llamada para manejar los resultados.

Los campos corresponden a los resultados de la búsqueda de un lugar y se dividen en tres categorías de facturación: Basic, Contact y Atmosphere. Los campos básicos se facturan con la tarifa base y no generan cargos adicionales. Los campos Contacto y Atmósfera se facturan con una tarifa más alta. Para obtener más información sobre cómo se facturan las solicitudes de datos de sitios, consulta Uso y facturación.

La API invoca el método de devolución de llamada especificado y muestra un arreglo de objetos GMSPlaceLikelihood.

Cada objeto GMSPlaceLikelihood representa un lugar. Para cada sitio, el resultado incluye una indicación de la probabilidad de que el sitio 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 el siguiente ejemplo de código, se recupera la lista de lugares donde es más probable que se encuentre el dispositivo y se registra el nombre y la probabilidad para 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 sitio sea la mejor coincidencia dentro de la lista de sitios mostrados para una solicitud individual. 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 arreglo que se muestra de objetos GMSPlaceLikelihood siempre es menor o igual que 1.0. Ten en cuenta que la suma no necesariamente es 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 Sitio B, el arreglo de probabilidades tiene dos miembros: el Sitio A con una probabilidad de 0.55 y el Sitio 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.