文档章节

iOS地图导航仪的实现

不孤独的美食家
 不孤独的美食家
发布于 2015/06/13 23:14
字数 804
阅读 404
收藏 5

                                              第一部分 知识储备

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


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


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

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

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

                                   第六部分 编写代码

代码截图如下:

        

         

           

       

                                              第七部分 程序截图

© 著作权归作者所有

共有 人打赏支持
不孤独的美食家
粉丝 88
博文 159
码字总数 48705
作品 1
长沙
高级程序员
定制iOS 7中的导航栏和状态栏

由于种种原因,申请了一个开源中国的帐号,也许会由于我的不耐心,不会亲自去一步步的写博文,但准备把自己看到的好的,都转载过来,就当时资源的存储,也算是一种推广吧。 iOS 7 教程:定制...

谁家的阿毛
2013/11/21
0
0
iOS开发需要了解的基础内容链接整理

https://llvm.org/svn/llvm-project/cfe/trunk/test/SemaObjC/builtinobjcnslog.m http://llvm.org/klaus/clang/commit/5faf5d31fa634e1fdb576c4d9708cd4efa5ea310/ 对Objective-C的NSObjec......

智能小松鼠
2015/01/14
0
2
【高德LBS开源组件大赛】iOS版地图选中Overlay功能组件

开源组件名称 iOS版地图选中Overlay功能组件 开源组件说明及使用场景 提供在iOS版地图中选中Overlay功能。使用场景很广泛,举个例子,搜索从A点到B点的公交路线时,地图上提供多条路线以供选...

cysgit
2014/07/23
0
2
IOS 内置URL schemes简介

在IOS的应用中经常会看到一些应用程序通过某个点击动作而直接跳到App Store页面,开始很奇怪这种第三方应用于IOS的系统应用交互时怎么实现的。后来发现苹果的开发者文档中关于这种通信的实现...

big军
2013/03/16
0
2
iOS 7:用代码解决视图控制器的View整体上移问题

如果你准备将你的老的 iOS 6 app 迁移到 iOS 7 上,那么你必须注意了。当你的老的 app 在 iOS 7 设备上运行时,所有ViewController 的视图都整体上移了,因为 iOS 7 把整个屏幕高度(包括状态...

mingxun
2014/06/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Coding and Paper Letter(三十九)

资源整理。 1 Coding: 1.Python库benchmark rio s3,用于在访问S3上的文件时对Rasterio / GDAL的多线程性能进行基准测试的工具。 benchmark rio s3 2.Pangeo-Binder Cookiecutter模板。 cook...

胖胖雕
27分钟前
0
0
Promise 对象

Promise(承诺) 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供...

简心
30分钟前
0
0
让UI设计师崩溃的瞬间,你经历过哪些?

隔行如隔山,这句话人人耳熟能详,但其实隔行并不可怕,大家各谋其事,各尽其职,倒也互不打扰,真正可怕的是,是内行还要受外行指点江山,而最难的部分,便是那沟通。流畅的沟通,和声细语,...

mo311
32分钟前
1
0
python进制转换

#进制转换print(bin(10)) #十进制转换成二进制print(oct(10)) #十进制转换成八进制print(hex(10)) #十进制转换成十六进制print(int('1010',2)) #二进制转十进制print(int(...

fadsaa
43分钟前
3
0
syntax error near unexpected token

最近不断重复在虚拟机CentOS测试安装gitlab,因为gitlab有一个脚本需要饭强才能下载,于是我先在windows下载好再上传到虚拟机,可是执行脚本的时候提示“syntax error near unexpected toke...

W_Lu
52分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部