Поиск…
Фильтр расстояний, используя
Пример :
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 следует отрегулировать по мере необходимости.