Нахавандипур Вандад
Шрифт:
/* Получаем направления */
MKDirections *directions = [[MKDirections alloc]
initWithRequest: request];
[directions calculateDirectionsWithCompletionHandler:
^(MKDirectionsResponse *response, NSError *error) {
/* Можно вручную выполнить синтаксический разбор отклика, но здесь мы
поступим иначе и воспользуемся приложением Maps (Карты) для отображения
начальной и конечной точек. Делать такой вызов API не обязательно, так как
ранее мы уже подготовили элементы карты. Но здесь вызов делается
в демонстрационных целях. Мы показываем, что в отклике с направлениями
содержится не только информация о начальной и конечной точках */
/* Отображаем направления в приложении Maps */
[MKMapItem
openMapsWithItems:@[response.source, response.destination]
launchOptions:@{
MKLaunchOptionsDirectionsModeKey:
MKLaunchOptionsDirectionsModeDriving}];
}];
Теперь, если объединить весь написанный код, он получится довольно компактным:
#import «AppDelegate.h»
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>
@implementation AppDelegate
— (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSString *destination = <# Place your destination address here #>;
[[CLGeocoder new]
geocodeAddressString: destination
completionHandler: ^(NSArray *placemarks, NSError *error) {
if (error!= nil){
/* Здесь обрабатываем ошибку, например отобразив окно
с предупреждением */
return;
}
MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];
request.source = [MKMapItem mapItemForCurrentLocation];
/* Преобразуем метку назначения CoreLocation в метку MapKit */
/* Получаем метку адреса назначения*/
CLPlacemark *placemark = placemarks[0];
CLLocationCoordinate2D destinationCoordinates =
placemark.location.coordinate;
MKPlacemark *destination = [[MKPlacemark alloc]
initWithCoordinate: destinationCoordinates
addressDictionary: nil];
request.destination = [[MKMapItem alloc]
initWithPlacemark: destination];
/* Мы собираемся попасть в точку назначения на автомобиле */
request.transportType = MKDirectionsTransportTypeAutomobile;
/* Получаем направления */
MKDirections *directions = [[MKDirections alloc]
initWithRequest: request];
[directions calculateDirectionsWithCompletionHandler:
^(MKDirectionsResponse *response, NSError *error) {
/* Можно вручную выполнить синтаксический разбор отклика, но здесь мы
поступим иначе и воспользуемся приложением Maps (Карты) для отображения
начальной и конечной точек. Делать такой вызов API необязательно,
так как ранее мы уже подготовили элементы карты. Но здесь вызов
делается в демонстрационных целях. Мы показываем, что в отклике
с направлениями содержится не только информация о начальной и конечной
точках */
/* Отображаем направления в приложении Maps */
[MKMapItem
openMapsWithItems:@[response.source, response.destination]