Поиск…


Фильтр расстояний, используя

Пример :

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

Например, в приведенном выше примере кода изменения местоположения менее 5 метров не будут отправляться на обратный вызов, но вместо этого будут проигнорированы.

Получить местоположение пользователя с помощью CLLocationManager

1 - Включить CoreLocation.framework в ваш проект; это достигается нажатием на:

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

Нажмите кнопку (+), найдите CoreLocation.framework и нажмите «Добавить».

2- Измените файл info.plist, чтобы получить разрешение на использование местоположения пользователя, открыв его в качестве исходного кода. Добавьте одну из следующих пара ключей: значение под тегом, чтобы спросить об использовании местоположения пользователя во время использования приложения:

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

3- импортировать CoreLocation в ViewController, который будет использовать его.

import CoreLocation

4- Убедитесь, что ваш ViewController соответствует протоколу CLLocationManagerDelagate

class ViewController: UIViewController,CLLocationManagerDelegate {}

После этих шагов мы можем создать объект CLLocationManager как переменную экземпляра и использовать его в ViewController.

var manager:CLLocationManager!

Мы не используем 'let' здесь, потому что мы будем изменять менеджера, чтобы указать его делегата, минимальное расстояние до события обновления и его точность

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

Теперь, чтобы получить доступ к обновлениям местоположения, мы можем реализовать функцию, ниже которой называется overtime, что достигается расстояниеФильтр.

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

Параметр местоположений представляет собой массив объектов CLLocation, которые представляют фактическое местоположение устройства. Из этих объектов можно получить доступ к следующим атрибутам: coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed Точность, вертикальность. Точность coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed и distance(from:) которое измеряет расстояние между двумя точками.

Примечание. При запросе разрешения на локацию существует два разных типа авторизации.

«Когда используется» авторизация дает разрешение приложения получать ваше местоположение только в том случае, если приложение используется или находится на переднем плане.

Разрешение «Всегда» дает разрешения на фоновое изображение приложения, что может привести к сокращению времени автономной работы, если ваше приложение закрыто.

Файл Plist следует отрегулировать по мере необходимости.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow