在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苹果地图有用开发的更多相关文章

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

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

  2. IOS 使用IOS6苹果地图

    IOS应用程序中使用Map Kit API开发地图应用程序.其核心是MKMapView类的使用.我们可以设置地图显示方式,控制地图,可以在地图上添加标注. 1.显示地图 在Map Kit API中显示 ...

  3. 【读书笔记】iOS-定位服务与地图应用开发

    一,定位服务. iOS设备能提供3种不同的定位途径: 1,WiFi定位,通过查询一个WiFi路由器的地理位置的信息,比较省电:iPhone,Ipod touch 和iPad都可以. 2,蜂窝式移动电话 ...

  4. ios开发之--条用第三方地图路线导航

    项目里面有位置功能,需要有导航,导航两种实现方式 (集成第三方SDK.URL跳转第三方应用) ,直接集成就不说,下面来说下通过url跳转, 最终效果如如下: 如果手机上安装的有客户端就展示,没有就不展 ...

  5. iOS 证书那些事

    关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾.对于一个iOS开发小白.半吊 ...

  6. 每位iOS开发者不容错过的10大有用工具

    内容简单介绍 1.iOS简单介绍 2.iOS开发十大有用工具之开发环境 3.iOS开发十大有用工具之图标设计 4.iOS开发十大有用工具之原型设计 5.iOS开发十大有用工具之演示工具 6.iOS开发 ...

  7. Web程序员开发App系列 - 申请苹果开发者账号

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  8. 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用

    不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...

  9. 2017-04-26 ios ipv6那些事(已完美解决)

    2017-04-26 ios ipv6那些事(已完美解决)   工作单位性质属于外包公司,每天都有几十的app要提交上传至应用市场,于2017年3月份接到ios工程师反馈 Guideline 2.1 ...

随机推荐

  1. hdu 3221 Brute-force Algorithm(高速幂取模,矩阵高速幂求fib)

    http://acm.hdu.edu.cn/showproblem.php?pid=3221 一晚上搞出来这么一道题..Mark. 给出这么一个程序.问funny函数调用了多少次. 我们定义数组为所求 ...

  2. Xcode 4.6.2 运行次数为偶数程序崩溃问题

    如果你的MAC 系统升级到10.8.4  Xcode升级到4.6.2,在工程运行第二次.第四次.第六次 ... 的时候程序就会崩溃 无论是新建的模板工程也会这样,这个属于系统BUG,在stackove ...

  3. JSON-C 的安装与使用

    下载源代码安装步骤 wget http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz tar xvf json-c-0.9.tar.gz cd jso ...

  4. c语言太easy笔误的,这将做

    调试发现时间写的一样NB代码 test.c int add(string); int main() { char* p = "11222"; add(p); return 0; } ...

  5. VSTO 得到Office文档的选中内容(Word、Excel、PPT、Outlook)

    原文:VSTO 得到Office文档的选中内容(Word.Excel.PPT.Outlook) 目的:得到在Word.Excel.PPT.Outlook中选中的一段内容. Word: private ...

  6. CF 519E(树上倍增求lca)

    传送门:A and B and Lecture Rooms 题意:给定一棵树,每次询问到达点u,v距离相等的点有多少个. 分析:按情况考虑: 1.abs(deep[u]-deep[v])%2==1时, ...

  7. LeetCode_Merge Two Sorted Lists

    一.题目 Merge Two Sorted Lists My Submissions Merge two sorted linked lists and return it as a new list ...

  8. filezilla安装

    [alexus@wcmisdlin02 bin]$ ./filezilla ./filezilla: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not ...

  9. Codeforces 164 E Compatible Numbers

    主题链接~~> 做题情绪:好题,做拉的比赛的时候想了非常久,想到枚举变幻某一位的 0 为 1 .可是每一个数都这样枚举岂不超时的节奏,当时没想到事实上从大到小枚举一次就 ok 了. 解题思路: ...

  10. .Net 文本框实现内容提示(仿Google、Baidu)

    原文:.Net 文本框实现内容提示(仿Google.Baidu) 1.Demo下载: 文本框实现内容提示(仿Google.Baidu).rar 2.创建数据库.表(我用的sqlserver2008数据 ...