Current Place

Selecciona la plataforma: Android iOS

Con el SDK de Places para iOS, puedes descubrir el lugar en el que se ubica actualmente el dispositivo. Es decir, la ubicación actualmente transmitida del dispositivo. Algunos ejemplos de lugares incluyen negocios 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. Mostrar atribuciones en tu aplicación

Cómo solicitar una 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 deseas llamar a findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: cuando la app se ejecute en segundo plano, sin activar un cuadro de 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 el negocio local u otro sitio en el que se ubica actualmente el dispositivo, llama a GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Incluye los siguientes parámetros:

  • Uno o más GMSPlaceField que especifican qué tipos de datos se mostrarán. Si omites este parámetro, se mostrará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 administrar 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 en cuestión sea el correcto. Cuanto más alto sea el valor, mayor será la probabilidad de que el lugar en cuestión 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.

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 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 del sitio que representa la mejor coincidencia dentro de la lista de sitios devueltos para una solicitud individual. 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 de objetos GMSPlaceLikelihood devuelto siempre es inferior o igual a 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 array 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 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.