Szukaj…


Filtr odległości za pomocą

Przykład:

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

Np. W powyższym przykładowym kodzie powyżej zmiany lokalizacji mniejsze niż 5 metrów nie będą wysyłane do oddzwaniania, ale zamiast tego będą ignorowane.

Uzyskaj lokalizację użytkownika za pomocą CLLocationManager

1 - Dołącz CoreLocation.framework do swojego projektu; odbywa się to poprzez kliknięcie:

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

Kliknij przycisk (+), poszukaj CoreLocation.framework i kliknij dodaj.

2- Zmodyfikuj plik info.plist, aby poprosić o pozwolenie na użycie lokalizacji użytkownika, otwierając go jako kod źródłowy. Dodaj jeden z następujących kluczy: parę wartości pod tagiem, aby poprosić o użycie lokalizacji użytkownika podczas korzystania z aplikacji:

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

3- zaimportuj CoreLocation do ViewController, który będzie go używał.

import CoreLocation

4- Upewnij się, że Twój ViewController jest zgodny z protokołem CLLocationManagerDelagate

class ViewController: UIViewController,CLLocationManagerDelegate {}

Po wykonaniu tych kroków możemy utworzyć obiekt CLLocationManager jako zmienną instancji i użyć go w ViewController.

var manager:CLLocationManager!

Nie używamy tutaj opcji „let”, ponieważ zmodyfikujemy menedżera, aby określić jego delegata, minimalną odległość przed zdarzeniem aktualizacji i jego dokładność

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

Teraz, aby uzyskać dostęp do aktualizacji lokalizacji, możemy zaimplementować funkcję, poniżej której nazywa się nadgodziny do odległości, jaką osiągnął Filtr.

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

Parametr lokalizacje to tablica obiektów CLLocation, które reprezentują rzeczywistą lokalizację urządzenia. Z tych obiektów można uzyskać dostęp do następujących atrybutów: coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed i distance(from:) funkcji distance(from:) która mierzy odległość między dwiema lokalizacjami.

Uwaga: podczas wnioskowania o pozwolenie na lokalizację istnieją dwa różne rodzaje autoryzacji.

Autoryzacja „When In Use” pozwala aplikacji na otrzymywanie Twojej lokalizacji tylko wtedy, gdy aplikacja jest używana lub na pierwszym planie.

Autoryzacja „Zawsze” daje uprawnienia aplikacji w tle, co może prowadzić do skrócenia żywotności baterii w przypadku zamknięcia aplikacji.

Plik Plist należy odpowiednio dostosować.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow