Suche…


Entfernungsfilter mit

Beispiel:

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

Im obigen Beispielcode werden beispielsweise Standortänderungen von weniger als 5 Metern nicht an den Rückruf gesendet, sondern ignoriert.

Abrufen des Benutzerstandorts mithilfe von CLLocationManager

1 - Fügen Sie das CoreLocation.framework in Ihr Projekt ein. Dies wird durch Klicken auf erreicht:

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

Klicken Sie auf die Schaltfläche (+), suchen Sie nach CoreLocation.framework und klicken Sie auf Hinzufügen.

2- Ändern Sie die Datei info.plist, um die Erlaubnis zur Verwendung des Benutzerstandorts zu erfragen, indem Sie sie als Quellcode öffnen. Fügen Sie einen der folgenden Schlüssel ein: Wertepaar unter dem Tag, um die Verwendung des Benutzerstandorts während der Verwendung der Anwendung abzufragen:

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

3- Importieren Sie CoreLocation in den ViewController, der es verwendet.

import CoreLocation

4- Stellen Sie sicher, dass Ihr ViewController dem CLLocationManagerDelagate-Protokoll entspricht

class ViewController: UIViewController,CLLocationManagerDelegate {}

Nach diesen Schritten können wir ein CLLocationManager-Objekt als Instanzvariable erstellen und im ViewController verwenden.

var manager:CLLocationManager!

Wir verwenden hier nicht "let", da wir den Manager ändern, um seinen Delegierten, die Mindestentfernung vor dem Aktualisierungsereignis und seine Genauigkeit anzugeben

//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()
  
  }

Um nun auf die Standortaktualisierungen zuzugreifen, können wir die Funktion implementieren, unter der Überstunden genannt werden, in denen der distanceFilter erreicht wird.

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

Der Parameter locations ist ein Array von CLLocation-Objekten, die den tatsächlichen Standort des Geräts darstellen. Von diesen Objekten aus können Sie auf die folgenden Attribute zugreifen: coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed Genauigkeit coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed und eine Funktionsentfernung distance(from:) , die die Entfernung zwischen zwei Orten misst.

Hinweis: Beim Anfordern der Berechtigung für den Standort gibt es zwei verschiedene Arten der Autorisierung.

Die Berechtigung "Bei Verwendung" erteilt der App nur die Berechtigung, Ihren Standort zu empfangen, wenn die App verwendet wird oder sich im Vordergrund befindet.

Die Berechtigung "Immer" gibt der App Hintergrundberechtigungen, die dazu führen können, dass die Akkulaufzeit verringert wird, falls Ihre App geschlossen wird.

Plist-Datei sollte nach Bedarf angepasst werden.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow