Zoeken…


Afstandsfilter gebruiken

Voorbeeld:

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

Bijv. In de bovenstaande voorbeeldcode hierboven worden locatiewijzigingen van minder dan 5 meter niet naar de callback verzonden, maar in plaats daarvan genegeerd.

Gebruikerslocatie ophalen met CLLocationManager

1 - Neem CoreLocation.framework op in uw project; dit wordt bereikt door te klikken op:

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

Klik op de knop (+), zoek CoreLocation.framework en klik op toevoegen.

2- Wijzig het bestand info.plist om toestemming te vragen om de gebruikerslocatie te gebruiken door het te openen als broncode. Voeg een van de volgende sleutel toe: waardepaar onder de tag om te vragen naar het gebruik van de locatie van de gebruiker terwijl de applicatie in gebruik is:

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

3- importeer CoreLocation naar de ViewController die het gaat gebruiken.

import CoreLocation

4- Controleer of uw ViewController voldoet aan het CLLocationManagerDelagate-protocol

class ViewController: UIViewController,CLLocationManagerDelegate {}

Na deze stappen kunnen we een CLLocationManager-object maken als instantievariabele en dit gebruiken in de ViewController.

var manager:CLLocationManager!

We gebruiken hier niet 'laten' omdat we de manager zullen wijzigen om de gemachtigde, minimale afstand voor de update-gebeurtenis en de nauwkeurigheid ervan te specificeren

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

Om toegang te krijgen tot de locatie-updates, kunnen we de onderstaande functie implementeren, die overuren wordt genoemd als de DistanceFilter wordt bereikt.

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

De locatieparameter is een array van CLLocation-objecten die de werkelijke locatie van het apparaat vertegenwoordigen. Vanuit deze objecten krijgt u toegang tot de volgende attributen: coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed nauwkeurigheid coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed en een functieafstand distance(from:) die de afstand tussen twee locaties meet.

Opmerking: Terwijl u toestemming vraagt voor de locatie, zijn er twee verschillende soorten autorisaties.

"Wanneer in gebruik" autorisatie geeft de app alleen toestemming om uw locatie te ontvangen wanneer de app in gebruik is of op de voorgrond.

"Altijd" autorisatie, geeft de app achtergrondrechten die kunnen leiden tot een kortere levensduur van de batterij in het geval dat uw app wordt gesloten.

Plist-bestand moet indien nodig worden aangepast.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow