标签:
第一部分 知识储备
1 根据地址定位
苹果给开发者为地址解析提供了CLGeocode工具类,该工具类可以把用户输入的地址解析成经纬度,该方是:
-geocodeAddressString:destAddress completionHandler:^(NSArray *placemarks, NSError *error) 该方法将字符串地址解析,然后就可以得到对应的经纬度
2 MKMapView控件及相关属性
<1 ios的MKMapView支持一下三种属性:
MKMapTypeStandard = 0,标准
MKMapTypeSatellite,卫星云图
MKMapTypeHybrid,混合
<2 三个布尔值类型的属性:zoomEnable缩放属性,rotateEnable旋转属性,scrollenable滚动属性
<3 showUserLocation该属性可用来显示当前用户的位置
3 MKMapView的代理方法
本程序会重写-mapView :rendererForOverly方法,它的返回值就是我们的导航路线。在这个方法用到了MKOverlay协议,用它来表示覆盖层。这里的画线就用了它的一个实现类:MkPolyLineRenderer,他代表的就是汽车行走的导航路线。而它由继承自MKOverLayRenderer.拥有填充色strokeColor和linewidth线宽这两个属性。其他属性,大家可以查看它的官方文档。
4 导航路线的获取
<1 利用MKDiretionsRequest创建请求导航对象request,设置起始点。
<2 设置目标点,用以创建的request初始化MKDirections.
<3 调用MKDirection 的方法-calculateDirectiosWithCompletionHandler,获取导航路线
5 iOS地图常用英语词汇总结及其释义
<1 CLLocation: 封装位置信息等(经纬度,海拔等)
<2 CLPlacemark:用来表示一个详细的地点了,比如地点的名字,城市名,国家,街道,邮编等等
<3 MKUserLocation: 用来封装地图上大头针位置信息(比如标题,子标题)
<4 CLLocationDegrees:封装了纬度和精度的度数
<5 CLLocationCoodinate2D:封装地理坐标(比如CLLocationDegrees latitude CLLocationDegrees longitude)
<6 MkCoodinateSpan :表示跨度(经度跨度:CLLocationDegrees longitudedelta 纬度跨度 CLLocationDegrees latitude)
<7MKCoodinateRegion : 区域(中心位置 CLLocationCoodinate2D center 区域跨度 MKCoodinateSpan span)
第二部分 程序实现思路(也就是伪代码)
第三部分 UI界面搭建
1 拖一个UItextField作为用户输入目的地的容器
2 拖一个MKMapView用来作为显示的地图
3 定义属性,用来保存导航路径
@property(nonatomic,strong) MKPolyline* navigationPath;
4 通过懒加载创建地址解析器
5 拖入一个按钮,用于实现用户的点击事件
6 UI界面搭建连线好如下图:
第四部分 对虚拟键盘的处理
第五部分 对程序模拟器位置的处理
有时当我们第二次进入程序的时候,发现模拟器上我们的位置没有显示出来,这就要求我们给模拟器一个位置。
选中模拟器————》调试————》位置————》自定位置————》输入你当前位置的经纬度————》选择“好”即可。
第六部分 编写代码
代码截图如下:
第七部分 程序截图
标签:
原文地址:http://my.oschina.net/iOSliuhui/blog/466462