iOS开发那些事-iOS6苹果地图有用开发
在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,可是API编程接口没有太大的变化。开发者不须要再学习非常多新东西就能开发地图应用,这是负责任的做法。因此本节介绍的内容也相同适用于iOS5上执行地图应用开发。
iOS应用程序中使用Map Kit API开发地图应用程序。 其核心是MKMapView类使用。我们能够设置地图显示方式、控制地图,能够在地图上加入标注。
显示地图
在Map Kit API中显示地图的视图是MKMapView,它的托付协议是MKMapViewDelegate。Map Kit API使用须要导入MapKit框架。
以下我们通过一个案例介绍一以下我们介绍一下Map Kit API的使用。这个案例在“输入查询地点keyword”文本框中输入keyword,点击“查询”button,先进行地理信息编码查询,查询获得地标信息后,在地图上标注出来。

首先加入框架MapKit.framework。然后在project中打开MainStoryboard.storyboard的IB设计,从对象库中拖拽Map View到设计画面中。

调整它的位置和大小使得Map View尽可能填出画面以下的空白部分,然后为Map View定义输入出口。以下我们看看主视图控制器ViewController.h代码:
#import <UIKit/UIKit.h> #import <MapKit/MapKit.h> #import ”MapLocation.h” @interface ViewController : UIViewController <MKMapViewDelegate> @property (weak, nonatomic) IBOutlet UITextField *txtQueryKey; @property (weak, nonatomic) IBOutlet MKMapView *mapView; - (IBAction)geocodeQuery:(id)sender; @end
因为使用Map Kit API,须要引入头文件<MapKit/MapKit.h>,头文件”MapLocation.h”是我们自定义的描写叙述地图标注点类。在定义ViewController时,还须要声明实现MKMapViewDelegate协议。txtQueryKey属性是查询keyword文本框,mapView属性是MKMapView类型,它与画面相应。点击查询button触发geocodeQuery:方法,它处理查询并在地图上做标注。
以下我看看ViewController.m的viewDidLoad方法代码:
- (void)viewDidLoad
{
[super viewDidLoad];
_mapView.mapType = MKMapTypeStandard;
_mapView.delegate = self;
}
在viewDidLoad方法中设置地图的类型,它的类型有3种:
MKMapTypeStandard 标注地图类型。
MKMapTypeSatellite 卫星地图类型。在卫星地图中没有街道名称等信息;
MKMapTypeHybrid 混合地图类型。在混合地图是在卫星地图上标注出街道等信息;

viewDidLoad方法的_mapView.delegate = self语句是当前视图控制器赋值给地图视图的delegate属性,这样地图视图在须要的时候就会回调ViewController,假设失败,回调以下的失败方法:
- (void)mapViewDidFailLoadingMap:(MKMapView *)theMapView withError:(NSError *)error {
NSLog(@”error : %@”,[error description]);
}
跟踪用户位置变化
MapKit提供了跟踪用户位置和方向变化的API,我们不用自己编写定位服务代码。开启地图视图的showsUserLocation属性,并设置方法setUserTrackingMode:就能够了,代码例如以下:
- (void)viewDidLoad
{
[super viewDidLoad];
if ([CLLocationManager locationServicesEnabled])
{
_mapView.mapType = MKMapTypeStandard;
_mapView.delegate = self;
_mapView.showsUserLocation = YES;
[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];
}
}
当中代码_mapView.showsUserLocation = YES,同意跟踪显示用户位置信息。在iOS设备中显示用户位置方式是一个发亮的蓝色小圆点。

[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES]语句设置用户跟踪模式,用户跟踪模式有3种:
MKUserTrackingModeNone 。没实用户跟踪模式;
MKUserTrackingModeFollow 。能够跟踪用户的位置变化;
MKUserTrackingModeFollowWithHeading 。能够跟踪用户的位置和方向变化;
然后,我们还须要实现地图视图托付方法mapView:didUpdateUserLocation:,它的代码例如以下:
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
_mapView.centerCoordinate = userLocation.location.coordinate;
}
该托付方法在定位服务更新完毕用户位置时候回调该方法,我们在该方法中又一次调整地图的中心点为当前用户的中心点,当中_mapView.centerCoordinate = userLocation.location.coordinate语句就是实现该目的。
这几行代码就能够跟踪用户位置的变化了,可是为了这样一个小的案例拿着iPhone在外面跑一圈进行測试没有必要。能够使用模拟器測试,模拟器有几个固定的模式能够发出连续变化的数据。測试执行在画面中会有一个小圆圈,它依照我们设定的速度一直执行。

iOS开发那些事-iOS6苹果地图有用开发的更多相关文章
- iOS开发那些事-iOS6苹果地图实用开发
在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,但是API编程接口没有太大的变化.开发人员不需要再学习很多新东西就能开发地图应用,这是负责任的做法.因此本节介绍的内容也同样适用于iOS5 ...
- IOS 使用IOS6苹果地图
IOS应用程序中使用Map Kit API开发地图应用程序.其核心是MKMapView类的使用.我们可以设置地图显示方式,控制地图,可以在地图上添加标注. 1.显示地图 在Map Kit API中显示 ...
- 【读书笔记】iOS-定位服务与地图应用开发
一,定位服务. iOS设备能提供3种不同的定位途径: 1,WiFi定位,通过查询一个WiFi路由器的地理位置的信息,比较省电:iPhone,Ipod touch 和iPad都可以. 2,蜂窝式移动电话 ...
- ios开发之--条用第三方地图路线导航
项目里面有位置功能,需要有导航,导航两种实现方式 (集成第三方SDK.URL跳转第三方应用) ,直接集成就不说,下面来说下通过url跳转, 最终效果如如下: 如果手机上安装的有客户端就展示,没有就不展 ...
- iOS 证书那些事
关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾.对于一个iOS开发小白.半吊 ...
- 每位iOS开发者不容错过的10大有用工具
内容简单介绍 1.iOS简单介绍 2.iOS开发十大有用工具之开发环境 3.iOS开发十大有用工具之图标设计 4.iOS开发十大有用工具之原型设计 5.iOS开发十大有用工具之演示工具 6.iOS开发 ...
- Web程序员开发App系列 - 申请苹果开发者账号
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用
不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...
- 2017-04-26 ios ipv6那些事(已完美解决)
2017-04-26 ios ipv6那些事(已完美解决) 工作单位性质属于外包公司,每天都有几十的app要提交上传至应用市场,于2017年3月份接到ios工程师反馈 Guideline 2.1 ...
随机推荐
- hdu4635(强连通缩点)
传送门:Strongly connected 题意:求最多可以加多少边,使得最新的图还不是强连通图. 分析:最终添加完边的图,肯定可以分成两个部X和Y,其中只有X到Y的边没有Y到X的边,那么要使得边数 ...
- (1)cocos2d-x-2.2.4搭建windows开发环境
Cocos2d-x-2.2.4搭建windows环境 软件需求 Windows系统(windows7或之后的系统): cocos2d-x-2.2.4压缩包. python安装包(推荐使用2.7.3版本 ...
- 你真的了解mysql的varchar字段的长度有多少吗?
今天在设计系统字段的时候, 发现自己对varchar还不够了解.我设了一个字段.类型为VARCHER,然后我就往里面测试性了写了东西.发现没有多少就满了.我觉得奇怪,5.5版本以上的MYSQL不是有6 ...
- Maven POM入门
Super POM(project object model) Maven内置了一个默认的POM(不在项目中,因此不可见),每一个project都会继承自这个默认的POM,因此叫Super POM.除 ...
- Verifying Checksum ... Bad Data CRC 错误解决
1.问题描述:使用SAM9X25 内核版本是2.6.39 在启动内核时会出现Verifying Checksum ... Bad Data CRC 错误 2.解决办法: 查看原先uboot参数: ...
- 备份恢复与CRM集成的sharepoint站点
在部署CRM与Sharepoint2010集成文档管理之后,一直担心如果需要在新服务器上重新部署CRM, 那么之前与CRM集成的Sharepoint2010文档内容,是否可以重新正确映射到相应的文档位 ...
- 前后端分离Web项目中,RBAC实现的研究
在前后端分离Web项目中,RBAC实现的研究 最近手头公司的网站项目终于渐渐走出混沌,走上正轨,任务也轻松了一些,终于有时间整理和总结一下之前做的东西. 以往的项目一般使用模板引擎(如ejs)渲染 ...
- Cacti监控Tomcatserver实现过程
1 首先去官网上面下载通用的监控模板 一般使用TomcatStats-0.1.zip 模板居多,下载地址: http://forums.cacti.net/download/file.php?id=1 ...
- [置顶] ios 时间定时器 NSTimer应用demo
原创文章,转载请注明出处:http://blog.csdn.net/donny_zhang/article/details/9251917 demo功能:ios NSTimer应用demo .ipho ...
- Qt之QComboBox(基本应用、代理设置)
QComboBox下来列表比较常用,用户可以通过选择不同的选项来实现不同的操作,如何实现自己的下拉列表呢? 很多人在问QComboBox如何设置选项的高度.代理等一些问题!今天就在此分享一下自己的一些 ...