标签:
上一节讲了大头针的一些知识,这节来讲讲导航,这个非常简单
步骤: 1.获取用户输入的地址
2.创建目的地在地图上的点
3.创建当前位置在地图上的点
4.调用系统自带的地图App导航
代码前准备:
拖入上图中三个控件,并且脱线到ViewController.m中
然后上代码:
1 // 2 // ViewController.m 3 // 05.导航 4 // 5 // Created by admin on 16/5/31. 6 // Copyright © 2016年 KXZDJ. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 //导入头文件 11 #import <MapKit/MapKit.h> 12 13 @interface ViewController () 14 @property (weak, nonatomic) IBOutlet UITextField *destinationFiled; 15 16 @end 17 18 @implementation ViewController 19 - (IBAction)navigation:(id)sender { 20 21 //1.获取用户输入的位置 22 NSString *address = self.destinationFiled.text; 23 //判断 24 if (address.length == 0) { 25 NSLog(@"请输入目的地"); 26 return; 27 } 28 29 //2.创建目的地在地图上的点 30 CLGeocoder *geo = [[CLGeocoder alloc] init]; 31 32 //地理编码 33 [geo geocodeAddressString:address completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) { 34 35 if (placemarks.count == 0 || error) { 36 NSLog(@"地理编码失败"); 37 return ; 38 } 39 //获取到placemarks中的一个元素(这里可能返回多个地标,但是我们只随便取一个,重点不在这里) 40 CLPlacemark *clp = [placemarks lastObject]; 41 42 //这里需要一个CLPlacemark的参数,那么这个参数在前面地理编码的时候用到过,同样创建一个,但是这里需要地理编码才能获取到placemarks?? 43 MKPlacemark *mkp = [[MKPlacemark alloc] initWithPlacemark:clp]; 44 //创建用户在地图上的点用下面这个方法,需要一个MKPlacemark的参数,我们就创建一个?? 45 MKMapItem *destinationItem = [[MKMapItem alloc] initWithPlacemark:mkp]; 46 47 //3.创建用户在地图上的点(MKMapItem的一个类方法,从当前位置获取一个点) 48 MKMapItem *currentItem = [MKMapItem mapItemForCurrentLocation]; 49 50 //4.调用系统自带的地图App进行导航 51 52 //MKMapTypeStandard = 0, 标准地图 53 //MKMapTypeSatellite, 卫星地图 54 //MKMapTypeHybrid 混合地图 55 //MKLaunchOptionsDirectionsModeKey:出行方式 MKLaunchOptionsMapTypeKey:地图类型 MKLaunchOptionsShowsTrafficKey:路况信息 (不明白的command + 左键/单机触控板点进去看) 56 NSDictionary *option = @{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsMapTypeKey:@0,MKLaunchOptionsShowsTrafficKey:@YES}; 57 58 [MKMapItem openMapsWithItems:@[currentItem,destinationItem] launchOptions:option]; 59 60 61 }]; 62 63 64 65 66 }
在上面的代码中,有几个参数之前没有用到过,下面有图解:
这是MKMapItem,是获取用户和目的地在地图上的点用的
这是调用系统自带的地图的方法
这个字典要去哪里找呢?
command + 左键/单击触控板 点击MKMapItem :
这里面已经标记了三个.
MKLaunchOptionsMapTypeKey这个键的值在:
MKLaunchOptionsShowsTrafficKey这个键的值是boolean类型的
标签:
原文地址:http://www.cnblogs.com/Xebdison/p/5548015.html