Current Place

Selecciona la plataforma: Android iOS

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.

  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:, 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:

  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 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.