iOS地图导航仪的实现
iOS地图导航仪的实现
不孤独的美食家 发表于3年前
iOS地图导航仪的实现
  • 发表于 3年前
  • 阅读 399
  • 收藏 5
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 我们在生活中经常使用苹果地图,百度地图等等App进行导航,现在学了iOS你想不想自己也来实现一下导航的乐趣?如果想的话,那下面就跟着我一起来实现它吧!!O(∩_∩)O哈哈~

                                              第一部分 知识储备

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界面搭建连线好如下图:


                                  第四部分 对虚拟键盘的处理


                                  第五部分 对程序模拟器位置的处理

          有时当我们第二次进入程序的时候,发现模拟器上我们的位置没有显示出来,这就要求我们给模拟器一个位置。

选中模拟器————》调试————》位置————》自定位置————》输入你当前位置的经纬度————》选择“好”即可。

                                   第六部分 编写代码

代码截图如下:

        

         

           

       

                                              第七部分 程序截图

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 90
博文 159
码字总数 48705
作品 1
×
不孤独的美食家
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: