Задание требуемой точности
Точность задается с помощью значения типа CLLocationAccuracy, определяемого как double. Оно указывается в метрах, поэтому если задать значение типа CLLocationAccuracy равным 10, то это будет означать, что от Core Location требуется определить текущее место положение с точностью до 10 метров, если это, конечно, возможно. Если же указать значение kCLLocationAccuracyBest, то подсистема Core Location должна воспользоваться самымточным способом определения текущего местоположения из всех доступных в настоящий момент.
Помимо значения kCLLocationAccuracyBest, можно также указать следующие значения:
kCLLocationAccuracyNearestTenMeters (с точностью до 10 метров),
kCLLocationAccuracyHundredMeters (с точностью до 100 метров),
kCLLocationAccuracyKilometer (с точностью до 1 километра), а также
kCLLocationAccurac yThreeKilometers (с точностью до 3 километров).
По умолчанию диспетчер местоположения будет уведомлять делегат о любых обнаруженных изменениях в местоположении мобильного устройства.
Установив фильтр расстояния (distance filter), можно предписать диспетчеру местоположения не уведомлять о каждом изменении, а вместо этого уведомлять только в том случае, если местоположение изменится больше, чем на определенную величину. Устанавливая фильтр расстояния, можно значительно сократить количество опросов, выполняемых приложением. Фильтры расстояния также задаются в метрах.
Так, если задать фильтр расстояния равным 1000, это будет означать, что диспетчер местоположения не должен уведомлять свой делегат до тех пор, пока устройство iPhone не переместится хотя бы на 1000 метров относительно того места, где раньше сообщалось о местоположении этого мобильного устройства. Данный пример может быть воплощен следующим образом: locationManager.distanceFilter 1000.Of;
Если же требуется возвратить диспетчер местоположения в исходное состояние без применения фильтра расстояния, для этой цели можно воспользоваться константой kCLDistanceFilterNone, как показано ниже.
locationManager.distanceFilter » kCLDi3tanceFilterNone;
Как и при задании желательной точности определения местоположения, в данном случае следует избегать обновлений местоположения чаще, чем это действительно необходимо. Ведь иначе напрасно расходуется ценная энергия заряда батареи питания мобильного устройства. Если в реализующем спидометр приложении, где скорость перемещения пользователя рассчитывается исходя из его местоположения, частые обновления последнего еще как-то оправданны, то в приложении, показывающем ближайший ресторан быстрого обслуживания, можно обойтись и намного более редкими обновлениями местоположения.
- Дата: 24-01-2015, 13:57