Current Place

Selecciona la plataforma: Android iOS

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

  1. Cómo solicitar una autorización de ubicación
  2. Límites de uso
  3. Cómo obtener la ubicación actual
  4. Muestra atribuciones en tu app

Cómo solicitar la autorización de ubicación

Si tu app usa GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, también debe solicitar permiso para usar los servicios de ubicación. Agrega la clave NSLocationWhenInUseUsageDescription al 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 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 al archivo Info.plist.
  2. Llama a requestAlwaysAuthorization en cualquier instancia de CLLocationManager antes de llamar al método.

Solicita la 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 en el que se encuentre el dispositivo actualmente, llama a GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Incluye los siguientes parámetros:

  • Uno o más objetos GMSPlaceField que especifican los tipos de datos que se mostrarán. 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 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. Para obtener 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 objetos GMSPlaceLikelihood.

Cada objeto GMSPlaceLikelihood representa un lugar. Para cada lugar, el resultado incluye 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. El búfer puede 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 es más probable que se encuentre 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 de que el lugar sea la mejor coincidencia dentro de la lista de lugares mostrados para 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 el array que se muestra de objetos GMSPlaceLikelihood 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 Sitio 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.

Muestra atribuciones en tu aplicación

Cuando tu app muestra información obtenida de GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, también debe mostrar atribuciones. Obtén más información sobre las atribuciones.