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在外面跑一圈进行測试没有必要。能够使用模拟器測试,模拟器有几个固定的模式能够发出连续变化的数据。測试执行在画面中会有一个小圆圈,它依照我们设定的速度一直执行。
转载于:https://www.cnblogs.com/hrhguanli/p/4548606.html
iOS开发那些事-iOS6苹果地图有用开发相关推荐
- iOS开发那些事-iOS6苹果地图实用开发
在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,但是API编程接口没有太大的变化.开发人员不需要再学习很多新东西就能开发地图应用,这是负责任的做法.因此本节介绍的内容也同样适用于iOS5 ...
- iOS开发那些事-Passbook详解与开发案例
Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用.它可以帮助我们管理商家发放的电子会员卡.积分卡. 优惠券等.这将对未来电子商务产生深远的影响.商家通过发放会员 ...
- iOS开发那些事-Passbook详解与开发案例(附视频)
Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用.它可以帮助我们管理商家发放的电子会员卡.积分卡.优惠券等.这将对未来电子商务产生深远的影响.商家通过发放会员卡 ...
- iOS开发那些事--iOS6 UI状态保持和恢复
iOS设计规范中要求,当应用退出的时候(包括被终止运行时候),画面中UI元素状态需要保持的,当再次进来的时候看状态与退出是一样的.iOS6之后苹果提供以下API使得UI状态保持和恢复变得很容易了. 在 ...
- Unity3d开发——保卫萝卜学习笔记一地图编辑器开发
一直在学习,几乎边学边忘,再也不想打王者农药了,现在打卡学习持续写博客,现在在开发学习保卫萝卜,这篇文章关于地图编辑器的开发,在项目中不能是无限个场景,用读取xml文件的方法可以说是能实现无限关卡,同 ...
- iOS 国外地图开发 谷歌地图坐标放到苹果地图上坐标不准确
首先请允许我发一个牢骚.苹果地图这个坑... 一 .我们要开发一个国外定点展示房屋信息的地图应用.效果图如下: . 二.第一反应用苹果原生地图Mapkit做.我们的坐标点都是从谷歌地图上取出来的. 功 ...
- ios html调起高德地图,iOS开发笔记 调起本地地图导航(百度、高德、腾讯、苹果自带)...
地图 从自己的APP跳转到用户本地的APP进行导航.首先,要先查看用户都安装了哪些地图类APP. 下面分3种情况进行分析: 1.用户没有安装第三方的地图,只有苹果自带的地图应用. 2.用户安装一款第三 ...
- iOS开发——项目中的地图跳转(苹果地图,百度地图,高德地图)
最近项目中遇到一个小需求,就是点击地图上的大头针进行导航,如果手机中装了多种地图软件,就用提示框显示出来,如果没有装地图软件,就默认跳转到苹果自带的地图进行导航,代码如下: //导航按钮 - (voi ...
- 苹果地图副总裁_苹果地图表现糟糕 iOS副总裁福斯特难辞其咎
苹果iOS高级副总裁福斯特演示苹果地图(腾讯科技配图) 腾讯科技讯(张和)北京时间9月30日消息,<财富>杂志网络版近日撰文称,作为苹果地图应用和Siri语音助手软件的负责人,苹果iOS副 ...
最新文章
- line-height 行高
- Docker多台宿主机间的容器互联-centos7
- java追加文本到文件末尾
- 【学习笔记】Linux 命令万字解析(超详细)
- 卓越性能代码_编程语言性能实测,Go比Python更胜一筹?
- 周报速递丨北交所 SaaS 首股将出;央行等印发《金融标准化“十四五”发展规划》
- 【原创】Windows下使用 Eclipse 管理 RabbitMQ 源码之问题解决
- 5.RabbitMQ 客户端控制消息
- 跟我一起学.NetCore之EF Core 实战入门,一看就会
- 解决git clone报错SSL certificate problem
- 图的基本概念【数据结构】
- 苹果CMSV10绿色毛毛虫主题模板
- 内网穿透工具 FRP Linux 环境搭建安装
- python字典和集合对象可以进行索引_python集合和字典
- iOS即时通讯之CocoaAsyncSocket源码解析五
- bzoj 1014: 洛谷 P4036: [JSOI2008]火星人
- c语言实验内容设计思路,c语言实验报告书3.doc
- 蒟蒻自推——稳定匹配
- vite首次打开界面加载慢问题解决
- 重磅丨数据+场景双重互联,有米广告完成程序化场景营销升级
热门文章
- LeetCode 473. 火柴拼正方形
- linux usb书籍,Linux大师(古鲁)话说USB发行版
- java中输入的程序_Java中输入的用法
- SAP License:SAP All-in-One产品特点
- SAP License:CO第一夜-成本要素会计
- Hive近百个常规函数详解
- 智慧、智能图书馆管理平台系统+web端业务数据管理平台+Axure通用web端高保真交互业务数据管理平台+铭牌管理+设备监控+系统管理+内容管理+机构列表管理+用户权限管理+专题管理+服务包管理
- 1227:Ride to Office
- 6491: Daydream
- 项目兼容ie8技术要点