Лекция 14 посвящена тому, как ваш iPhone может определять, где вы находитесь в этом мире, на этой планете. К этому имеют отношение два компонента: Core Location и MapKit. Core Location — это “внутренность” программного обеспечения по определению местоположения, не-UI часть, а MapKit — это наоборот пользовательский интерфейс (UI), то есть как мы представляем пользователю информацию о том, где мы находимся на карте.
Основным объектом, который представляет ваше местоположение, является CLLocation, CL — это сокращение для Core Location. Объект CLLocation, описывающий местоположение, имеет свойства: координаты, высота, горизонтальная и вертикальная точность измерения местоположения, временная отметка, скорость, курс, указывающий направление. Но главным в местоположении, конечно, являются широта latitude и долгота longitude. Высота — это отдельная переменная altitude.
Важным показателем определения координат и высоты является точность, которая не похожа на обычную точность в %. В действительности, это один из заранее определенных терминов. Пол Хэгарти подробно рассказывает об этом в лекции. Но всегда большая точность требует большой энергии.
В Лекции 14 подробно освещаются различные типы мониторинга вашего местоположения: непрерывное, основанное на «значительных изменениях», основанное на регионе. Особое внимание уделяется авторизации на получение информации о местоположении и работе в фоновом режиме (background).
Следующая часть посвящена MapKit и всему, что показывается на карте: MKAnnotation (представлен виде булавки с красной головкой), MKDirections (направления), MKOverlay («наложения»).
Рассматриваются методы делегата MKMapViewDelegate.
Далее следует демонстрационный пример, в котором помимо возможностей MapKit Пол Хэгерти демонстрирует возможности Swift : наблюдателя {didSet}, в котором одной строкой выполняется парсинг GPX файла, используется возможность вынесения «хвостового» замыкания за круглые скобки и сокращенные имена параметров ввиде $0. Но самое интересное начинается когда профессор наделяет waypoint, полученный из GPX файла и который знать ничего не знает о MapKit, свойствами MKAnnotation. Причем делает это с помощью extension без затрат памяти, используя только вычисляемые переменные. Получается как бы «двуликий» объект, и далее в коде мы разворачиваем его нужным лицом в зависимости от контекста: иногда это GPX.Waypoint, иногда MKAnnotation.
Еще Пол Хэгерти демонстрирует как построить segue от того объекта, к которому нет доступа на storyboard. Например, callout («выноска») для annotation.
Лекция и слайды на английском языке находятся на iTunes название “14. Core Location and MapKIt.”
Код для демонстрационных примеров Trax MapKit можно найти для Swift 1.2 на сайте Stanford, а для Swift 2.0 и Xcode 7 здесь.
Русский неавторизованный конспект лекции , хронометрированный через каждые 5 минут и представленный в PDF — файле, доступен на платной основе.
Класс! Всегда было интересно попробовать себя в приложениях с MapKit и CoreLocation! Интересно проследить как все работает, начиная с прошлой лекции, где все начиналось с CoreMotion! 🙂