在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,但是API编程接口没有太大的变化。开发人员不需要再学习很多新东西就能开发地图应用,这是负责任的做法。因此本节介绍的内容也同样适用于iOS5上运行地图应用开发。
iOS应用程序中使用Map Kit API开发地图应用程序。 其核心是MKMapView类使用。我们可以设置地图显示方式、控制地图,可以在地图上添加标注。
显示地图
在Map Kit API中显示地图的视图是MKMapView,它的委托协议是MKMapViewDelegate。Map Kit API使用需要导入MapKit框架。
下面我们通过一个案例介绍一下面我们介绍一下Map Kit API的使用。这个案例在“输入查询地点关键字”文本框中输入关键字,点击“查询”按钮,先进行地理信息编码查询,查询获得地标信息后,在地图上标注出来。
首先添加框架MapKit.framework。然后在工程中打开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属性是查询关 键字文本框,mapView属性是MKMapView类型,它与画面对应。点击查询按钮触发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在外面跑一圈进行测试没有必要。可以使用模拟器测试,模拟器有几个固定的模式可以发出连续变化的数据。测试运行在画面中会有一个小圆圈,它按照我们设定的速度一直运行。
相关推荐
【Object-C】ios苹果app开发入门object-c例子demo14个实例 一般编程问题 【实例简介】 ios苹果app开发入门,object-c,例子,demo,14个实例 初学者难得的学习实例 【实例截图】 【核心代码】 归档 ├── Air...
在iOS开发领域,掌握进阶技术是提升个人技能的关键步骤,这将使你从众多开发者中脱颖而出。"iOS开发进阶篇-成为一个iOS开发高手"这份资料正为此目标提供了全面的指导。它深入探讨了iOS开发的核心概念和技术,旨在...
- Objective-C是iOS开发的传统语言,而Swift是苹果在2014年推出的现代编程语言。两者各有优缺点,Swift语法简洁,安全,而Objective-C则有丰富的Cocoa Touch框架支持。 2. **Cocoa Touch框架**: - Cocoa Touch是...
### UI第一章:无限互联iOS开发教程课件 -- iPhone开发入门 #### iOS系统概述与架构 - **iOS系统**:作为苹果公司专为iPhone、iPod touch及iPad设计的操作系统,iOS自诞生以来就以其简洁易用的特点受到全球用户的...
在移动设备操作系统领域,苹果的iOS一直以其安全性和用户体验著称。随着iOS 15.0的发布,开发者和用户对于系统的更新尤为关注,特别是其中的定位服务。"location-cleaned"驱动作为iOS 15.0中的一个重要组成部分,它...
苹果开发 - iOS - 邓白氏 - 编码申请 在 iOS 开发中,申请邓白氏编码是一件重要的事情。这篇文章将指导您如何申请邓白氏编码,包括准备资料、申请步骤和审核结果等。 准备资料 在申请邓白氏编码之前,需要准备...
iOS 应用开发指南是 Apple 官方提供的一份教程,旨在指导开发者从头开始学习 iOS 应用开发。该指南分为五个部分:开始、教程、基础、开发和下一步。 开始部分介绍了 iOS 应用开发的基本概念和设置,包括如何获取...
这是有关于苹果内购文档的集合,里面主要讲述了内购流程的实现原理!以及苹果充值因苹果保密规则衍生的一系列刷单手段的防刷策略
【标题】中的“IOS应用源码Demo-类似苹果内置谷歌地图的翻页效果”表明这是一个iOS应用程序的源代码示例,其特色在于实现了类似于苹果设备内置地图应用与谷歌地图结合的翻页效果。这种效果通常涉及到UI动画和交互...
在iOS开发领域,斯坦福大学的课程以其权威性和深度闻名,尤其对于初学者而言,它提供了深入了解Apple平台开发的宝贵资源。"白胡子老爷爷"是学生们对教授的亲切称呼,他的课程通常深入浅出,易于理解。在这个“IOS...
通过学习这些源代码,开发者可以更好地理解iOS编程的核心概念,包括Swift语言、Xcode集成开发环境(IDE)的使用,以及苹果的UIKit框架。 首先,Swift是iOS开发的主要编程语言,它简洁、安全且具有高性能。Swift语法...
1. "IOS":指的是苹果公司的移动操作系统,用于iPhone、iPad等设备,开发应用需要使用Swift或Objective-C语言。 2. "源码":指的是程序的原始文本,可以被程序员阅读、修改和编译,是学习和理解软件工作原理的关键。...
2. **Objective-C编程**:作为iOS开发的基础,Objective-C是一种面向对象的编程语言,它是苹果的主力开发语言,尤其在游戏开发中。源代码将展示如何使用Objective-C来组织和控制游戏逻辑,创建对象,以及与用户界面...
该压缩包文件“IOS应用源码Demo-仿苹果音乐播放器的歌曲封面滑动效果-毕设学习.zip”提供了一个iOS应用的源代码示例,主要用于...这个项目对于那些正在准备毕业设计或希望提升iOS开发技能的学生来说是一个宝贵的资源。
通过研究这个源码,开发者可以深入理解iOS开发中的关键技术和设计模式。 在iOS开发中,使用的主要编程语言是Swift或Objective-C。Swift是苹果推出的一种现代化、安全的编程语言,而Objective-C则是一种更为传统的、...
苹果iOS开发中文电子书推荐:4--iPhone开发基础中文教程.part1
《iOS开发实用教材》是一本专为初学者设计的指南,旨在帮助读者快速掌握iOS应用开发的基本技能。这本书深入浅出地介绍了iOS开发的核心概念和技术,是新人进入iOS开发领域的理想起点。 首先,书中详细讲解了...
这通常意味着`Location`目录是一个特定的自定义或开发环境,可能是一个越狱设备上的目录结构,因为正常的iOS系统中并不直接存在这样的用户可访问目录。完成文件移动后,需要重启Location服务,以便系统加载新的驱动...
Objective-C是苹果平台的原生编程语言,用于开发iOS和macOS应用程序。在这个项目中,Objective-C将与TensorFlow集成,实现模型的加载、预测和结果处理。 为了在iOS应用中使用TensorFlow模型,通常需要以下步骤: 1...
Objective-C是Apple开发的面向对象的编程语言,它是开发iOS和macOS应用程序的主要工具。Objective-C基于C语言,并加入了Smalltalk的类和消息传递机制。在iOS 7应用开发中,理解Objective-C的基础语法、类、对象、...