Лекция 14 CS193P Winter 2015 — Core Location и MapKit

Screen Shot 2015-09-20 at 9.24.24 AM
Лекция 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 — файле, доступен на платной основе.

Один комментарий к “Лекция 14 CS193P Winter 2015 — Core Location и MapKit

  1. Класс! Всегда было интересно попробовать себя в приложениях с MapKit и CoreLocation! Интересно проследить как все работает, начиная с прошлой лекции, где все начиналось с CoreMotion! 🙂

Обсуждение закрыто.