文档章节

iOS地图导航仪的实现

不孤独的美食家
 不孤独的美食家
发布于 2015/06/13 23:14
字数 804
阅读 407
收藏 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
长沙
高级程序员
私信 提问
Phonegap各类商业插件

【Phonegap商业插件服务】[目前插件已经支持到Phonegap最新版本] 1.phonegap-百度社会化分享-andriod插件 v2.0 【该插件支持微信分享和朋友圈分享,qq好友分享,微博分享】 2.phonegap百度社...

夜澜小雨
2015/07/15
1K
0
谷歌不愿提供语音导航功能促使苹果放弃谷歌地图

苹果和谷歌在逐向导航功能方面发生分歧是导致苹果决定在iOS 6中放弃谷歌地图采用自己的地图解决方案的主要原因。美国科技博客网站AllthingsD撰稿人约翰·帕兹诺斯(john paczkowski)周三引述多...

oschina
2012/09/27
3.6K
44
ios 有没有做GIS的开源SDK或软件?

最近想做一款GIS的应用程序,部署在ipad硬件上;但我不知道怎么入手。就是在ipad上能够显示地图、导航,采集,标注等功能的GIS软件。 查找了许多资料都是基于ARCGIS API for ios;baidu API ...

ios与GIS新手
2012/12/06
1K
4
苹果iOS的八年:如何一步步爬到了这么高

电脑需要操作系统,手机也需要,2007 年,苹果带着旗下第一款智能手机 iPhone 和第一款操作系统亮相,从而奠定了改变世界的基础。8 年时间以来,iPhone 一直在不停的进化、演变,iOS 操作系统...

oschina
2015/09/08
4K
22
iOS 11 正式发布!界面精简,功能更强大

在今天凌晨的WWDC2017大会上,苹果正式发布了iOS 11操作系统。整体而言,iOS 11的功能更加强大,而且此前一些令人头疼不已的交互逻辑也得到了改善。 首先来看锁屏和通知中心,苹果这次把锁屏...

达尔文
2017/06/06
7.4K
39

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink TableEnvironment的scan操作

序 本文主要研究一下flink TableEnvironment的scan操作 实例 //Scanning a directly registered tableval tab: Table = tableEnv.scan("tableName")//Scanning a table from a registered......

go4it
24分钟前
2
0
JS检测移动端横竖屏的代码

移动端的设备提供了一个事件:orientationChange事件 这个事件是苹果公司为safari中添加的。以便开发人员能够确定用户何时将设备由横向查看切换为纵向查看模式。 在设备旋转的时候,会触发这...

不负好时光
25分钟前
2
0
ArrayList 优化

优化是 基于数据的大小 当数据量过大 (内存能抗住) 性能达到瓶颈才需要针对性的做优化 contain 优化 可以转换为set add 大批量操作 先预估数据量 调用 `ensureCapacity(int minCapacity)` ...

NotFound403
26分钟前
3
0
Lifecycle Aware Data Loading with Architecture Components

In my previous blog post, I talked about how you can use Loaders to load data in a way that automatically handles configuration changes. With the introduction of Architecture Co......

SuShine
26分钟前
1
0
性能测试汇总

服务器带宽测试 iperf测试带宽 wget -c https://codeload.github.com/esnet/iperf/tar.gz/3.1.6 tar zxvf 3.1.6cd iperf*yum install gcc./configure --prefix=/usr/local/iperf#指定......

以谁为师
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部