Читаем iOS. Приемы программирования полностью

otherButtonTitles: nil];

[alertView show];

}

Элементарно. Переходим к методу mapView: didUpdateUserLocation::

— (void) mapView:(MKMapView *)mapView

didUpdateUserLocation:(MKUserLocation *)userLocation{

MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];

request.naturalLanguageQuery = @"restaurants";

MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01);

request.region =

MKCoordinateRegionMake(userLocation.location.coordinate, span);

MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest: request];

[search startWithCompletionHandler:

^(MKLocalSearchResponse *response, NSError *error) {

for (MKMapItem *item in response.mapItems){

NSLog(@"Item name = %@", item.name);

NSLog(@"Item phone number = %@", item.phoneNumber);

NSLog(@"Item url = %@", item.url);

NSLog(@"Item location = %@", item.placemark.location);

}

}];

}

В этом методе все просто. Мы создаем локальный поисковый запрос и устанавливаем в качестве значения его свойства naturalLanguageQuery те элементы, которые мы хотим найти на карте, — в данном случае рестораны. Затем получаем местоположение пользователя и создаем на его основе регион типа MKCoordinateRegion. Мы делаем это потому, что хотим определить область, окружающую пользователя, и выполнить поиск в этой области. Область сообщает движку поиска местоположения о том, что мы хотим ограничить круг поиска заданным регионом. Как только регион создан, задаем его в качестве значения свойства region для локального поиска. Сделав это, можно приступать к поиску. Для этого мы отправляем локальный поисковый запрос методу экземпляра startWithCompletionHandler:, относящемуся к классу MKLocalSearch. Этот метод принимает блок в качестве параметра. Данный блок кода вызывается при поступлении результатов поиска или возникновении ошибки.

Найденные элементы будут записаны в свойстве mapItems параметра отклика нашего блокового объекта, эти картографические элементы будут относиться к типу MKMapItem. У каждого элемента будут свойства — в частности, name, phoneNumber и url — которые помогут нанести на карту интересующие нас точки. При этом мы воспользуемся приемами, изученными ранее в этой главе, — например, отобразим на карте маркеры, о которых говорили в разделе 9.4.

<p>См. также</p>

Разделы 9.4–9.6.

<p>9.10. Отображение направлений на карте</p><p>Постановка задачи</p>

Необходимо отображать на карте направления, подсказывая таким образом пользователю, как попасть из точки А в точку B.

<p>Решение</p>

Инстанцируйте объект типа MKDirections и вызовите метод экземпляра calculateDirectionsWithCompletionHandler:, относящийся к этому объекту. Так будет вызван обработчик завершения, а вам будет передан объект типа MKDirectionsResponse. Воспользуйтесь таким откликом с информацией о направлениях, чтобы открыть на устройстве приложение Maps (Карты). Этому мы также вскоре научимся.

<p>Обсуждение</p>

Вы можете отображать на экране направления, подсказывающие пользователю, как пройти или проехать куда-либо. Но такая возможность доступна только в приложении Maps (Карты). Соответственно, вы не сможете наносить такие линии на карту прямо в картографическом виде внутри приложения. Способ указания направлений на карте в приложении Maps очень прост. Чтобы создать на экране такие линии, потребуется инстанцировать экземпляр класса MKDirections. Для работы с этим классом нужен уже готовый экземпляр MKDirectionsRequest.

Кроме того, для создания запроса на отображение направлений потребуется создать экземпляры MKMapItem. Каждый из таких элементов будет соответствовать точке на карте. Суть такова: если вы хотите отобразить на карте направления, помогающие пользователю найти путь из точки A в точку B, то эти точки потребуется представить в виде элементов карты. На базе информации об этих элементах создается запрос, а затем для получения направлений используется класс MKDirections. После получения направлений можно поступить двумя способами.

• Обработать направления самостоятельно. Например, с помощью одной из техник, изученных ранее в этой главе (см. раздел 9.4), вы можете получить все автозаправки (их метки), расположенные по пути из точки A в точку B, а затем снабдить эти точки на карте маркерами.

Перейти на страницу:

Все книги серии Бестселлеры O'Reilly

Искусство управления IT-проектами
Искусство управления IT-проектами

В отличие от множества трудов, посвященных руководству проектами и командами, в этой книге не проповедуются никакие новые учения и не превозносятся великие теории. Скотт Беркун считает залогом успеха практику и разнообразие подходов. В книге описываются основные сложности и проблемные ситуации, возникающие в работе менеджера проекта, даны рекомендации по выходу из них.Издание предназначено не только для лидеров команд и менеджеров высшего звена, но и для программистов, тестеров и других исполнителей конкретных проектных заданий. Также оно будет полезно студентам, изучающим бизнес-менеджмент, проектирование изделий или программную инженерию.Текст нового издания значительно переработан автором с целью добиться большей ясности, кроме того, книга дополнена новым приложением и более чем 120 практическими упражнениями.

Скотт Беркун

Деловая литература
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных