Buscar..


Filtro de distancia utilizando

Ejemplo:

   CLLocationManager *locationManager = [[CLLocationManager alloc] init];
   locationManager.delegate = self;
   locationManager.desiredAccuracy = kCLLocationAccuracyBest;
   locationManager.distanceFilter = 5;

Por ejemplo, en el código de ejemplo anterior, los cambios de ubicación de menos de 5 metros no se enviarán a la devolución de llamada, sino que se ignorarán.

Obtener la ubicación del usuario usando CLLocationManager

1 - Incluya el CoreLocation.framework en su proyecto; Esto se logra haciendo clic en:

root directory -> build phases -> Link Binary With Libraries

Haga clic en el botón (+), busque CoreLocation.framework y haga clic en agregar.

2- Modifique el archivo info.plist para solicitar permiso para usar la ubicación del usuario abriéndolo como código fuente. Agregue cualquiera de los siguientes pares clave: valor debajo de la etiqueta para solicitar el uso de la ubicación del usuario mientras la aplicación está en uso:

<key>NSLocationWhenInUseUsageDescription</key>
<string>message to display when asking for permission</string>

3- Importar CoreLocation al ViewController que lo utilizará.

import CoreLocation

4- Asegúrese de que su ViewController cumpla con el protocolo CLLocationManagerDelagate

class ViewController: UIViewController,CLLocationManagerDelegate {}

Después de estos pasos, podemos crear un objeto CLLocationManager como variable de instancia y usarlo en ViewController.

var manager:CLLocationManager!

No usamos 'vamos' aquí porque modificaremos el administrador para especificar su delegado, la distancia mínima antes del evento de actualización y su precisión

//initialize the manager
manager = CLLocationManager()

//specify delegate
manager.delegate = self

//set the minimum distance the phone needs to move before an update event is triggered (for example:  100 meters)
manager.distanceFilter = 100

//set Accuracy to any of the following depending on your use case

//let kCLLocationAccuracyBestForNavigation: CLLocationAccuracy
//let kCLLocationAccuracyBest: CLLocationAccuracy
//let kCLLocationAccuracyNearestTenMeters: CLLocationAccuracy
//let kCLLocationAccuracyHundredMeters: CLLocationAccuracy
//let kCLLocationAccuracyKilometer: CLLocationAccuracy
//let kCLLocationAccuracyThreeKilometers: CLLocationAccuracy

manager.desiredAccuracy = kCLLocationAccuracyBest

//ask the user for permission
manager.requestWhenInUseAuthorization()

//Start collecting location information
if #available(iOS 9.0, *) {
            
   manager.requestLocation()
            
 } else {
  
   manager.startUpdatingLocation()
  
  }

Ahora, para obtener acceso a las actualizaciones de ubicación, podemos implementar la función a continuación, que se denomina tiempo extra al que se alcanza el filtro de distancia.

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {}

El parámetro de ubicación es una matriz de objetos CLLocation que representan la ubicación real del dispositivo. Desde estos objetos, uno puede obtener acceso a los siguientes atributos: coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed precisión coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed precisión coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed y una distance(from:) función distance(from:) que mide la distancia entre dos ubicaciones.

Nota: al solicitar permiso para la ubicación, hay dos tipos diferentes de autorización.

La autorización "Cuando está en uso" solo otorga permiso a la aplicación para recibir su ubicación cuando la aplicación está en uso o en primer plano.

La autorización "Siempre" le otorga a la aplicación permisos de fondo que pueden reducir la duración de la batería en caso de que la aplicación esté cerrada.

Archivo de plist debe ajustarse según sea necesario.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow