在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在外面跑一圈进行測试没有必要。能够使用模拟器測试,模拟器有几个固定的模式能够发出连续变化的数据。測试执行在画面中会有一个小圆圈,它依照我们设定的速度一直执行。

转载于:https://www.cnblogs.com/hrhguanli/p/4548606.html

iOS开发那些事-iOS6苹果地图有用开发相关推荐

  1. iOS开发那些事-iOS6苹果地图实用开发

    在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,但是API编程接口没有太大的变化.开发人员不需要再学习很多新东西就能开发地图应用,这是负责任的做法.因此本节介绍的内容也同样适用于iOS5 ...

  2. iOS开发那些事-Passbook详解与开发案例

    Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用.它可以帮助我们管理商家发放的电子会员卡.积分卡. 优惠券等.这将对未来电子商务产生深远的影响.商家通过发放会员 ...

  3. iOS开发那些事-Passbook详解与开发案例(附视频)

    Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用.它可以帮助我们管理商家发放的电子会员卡.积分卡.优惠券等.这将对未来电子商务产生深远的影响.商家通过发放会员卡 ...

  4. iOS开发那些事--iOS6 UI状态保持和恢复

    iOS设计规范中要求,当应用退出的时候(包括被终止运行时候),画面中UI元素状态需要保持的,当再次进来的时候看状态与退出是一样的.iOS6之后苹果提供以下API使得UI状态保持和恢复变得很容易了. 在 ...

  5. Unity3d开发——保卫萝卜学习笔记一地图编辑器开发

    一直在学习,几乎边学边忘,再也不想打王者农药了,现在打卡学习持续写博客,现在在开发学习保卫萝卜,这篇文章关于地图编辑器的开发,在项目中不能是无限个场景,用读取xml文件的方法可以说是能实现无限关卡,同 ...

  6. iOS 国外地图开发 谷歌地图坐标放到苹果地图上坐标不准确

    首先请允许我发一个牢骚.苹果地图这个坑... 一 .我们要开发一个国外定点展示房屋信息的地图应用.效果图如下: . 二.第一反应用苹果原生地图Mapkit做.我们的坐标点都是从谷歌地图上取出来的. 功 ...

  7. ios html调起高德地图,iOS开发笔记 调起本地地图导航(百度、高德、腾讯、苹果自带)...

    地图 从自己的APP跳转到用户本地的APP进行导航.首先,要先查看用户都安装了哪些地图类APP. 下面分3种情况进行分析: 1.用户没有安装第三方的地图,只有苹果自带的地图应用. 2.用户安装一款第三 ...

  8. iOS开发——项目中的地图跳转(苹果地图,百度地图,高德地图)

    最近项目中遇到一个小需求,就是点击地图上的大头针进行导航,如果手机中装了多种地图软件,就用提示框显示出来,如果没有装地图软件,就默认跳转到苹果自带的地图进行导航,代码如下: //导航按钮 - (voi ...

  9. 苹果地图副总裁_苹果地图表现糟糕 iOS副总裁福斯特难辞其咎

    苹果iOS高级副总裁福斯特演示苹果地图(腾讯科技配图) 腾讯科技讯(张和)北京时间9月30日消息,<财富>杂志网络版近日撰文称,作为苹果地图应用和Siri语音助手软件的负责人,苹果iOS副 ...

最新文章

  1. line-height 行高
  2. Docker多台宿主机间的容器互联-centos7
  3. java追加文本到文件末尾
  4. 【学习笔记】Linux 命令万字解析(超详细)
  5. 卓越性能代码_编程语言性能实测,Go比Python更胜一筹?
  6. 周报速递丨北交所 SaaS 首股将出;央行等印发《金融标准化“十四五”发展规划》
  7. 【原创】Windows下使用 Eclipse 管理 RabbitMQ 源码之问题解决
  8. 5.RabbitMQ 客户端控制消息
  9. 跟我一起学.NetCore之EF Core 实战入门,一看就会
  10. 解决git clone报错SSL certificate problem
  11. 图的基本概念【数据结构】
  12. 苹果CMSV10绿色毛毛虫主题模板
  13. 内网穿透工具 FRP Linux 环境搭建安装
  14. python字典和集合对象可以进行索引_python集合和字典
  15. iOS即时通讯之CocoaAsyncSocket源码解析五
  16. bzoj 1014: 洛谷 P4036: [JSOI2008]火星人
  17. c语言实验内容设计思路,c语言实验报告书3.doc
  18. 蒟蒻自推——稳定匹配
  19. vite首次打开界面加载慢问题解决
  20. 重磅丨数据+场景双重互联,有米广告完成程序化场景营销升级

热门文章

  1. LeetCode 473. 火柴拼正方形
  2. linux usb书籍,Linux大师(古鲁)话说USB发行版
  3. java中输入的程序_Java中输入的用法
  4. SAP License:SAP All-in-One产品特点
  5. SAP License:CO第一夜-成本要素会计
  6. Hive近百个常规函数详解
  7. 智慧、智能图书馆管理平台系统+web端业务数据管理平台+Axure通用web端高保真交互业务数据管理平台+铭牌管理+设备监控+系统管理+内容管理+机构列表管理+用户权限管理+专题管理+服务包管理
  8. 1227:Ride to Office
  9. 6491: Daydream
  10. 项目兼容ie8技术要点