探索 MapKit:从基础应用到功能拓展
1. 运行首个 MapKit 应用
终于到了有趣的部分!你即将看到自己努力的成果——一个能让用户浏览世界地图的完整应用。接下来,我们将在 iPad 和 iPhone 环境中运行这个应用。
1.1 在 iPad 模拟器中运行应用
- 点击屏幕左上角的“运行”按钮,应用将在 iPad 模拟器中启动。
- 此时会出现全屏启动画面。
- 地图出现后,用户可以自由操作,如滚动、捏合缩放以及在横向和纵向模式之间旋转设备。令人惊喜的是,在这个项目中无需编写一行代码就能实现这些功能。
1.2 在 iPhone 模拟器中运行应用
- 只需在屏幕左上角选择 iPhone 模拟器选项,然后以与 iPad 相同的方式运行应用即可。
在短短几分钟内,你就完成了一个具有复杂地图功能的应用。想当年,在任何设备上创建此类应用几乎是不可能的。现在,你可以迅速拼凑出这样一个应用,不妨向朋友们炫耀一番。
2. 理解地图几何和坐标系统
2.1 经纬度的基本概念
- 纬度 :通常称为纬线,是水平环绕地球、东西方向的假想线。这些无形的线以度、分、秒为单位,从赤道向北或向南测量。赤道是地球表面两极之间的椭圆轨迹,北极纬度为 90 度北,南极纬度为 90 度南。
- 经度 :通常称为子午线,是穿过南北两极的垂直假想线(椭圆)。它们也以度、分、秒为单位,从本初子午线向东或向西测量。本初子午线是一条穿过英国格林威治的任意标准线,与环绕地球 360 度的赤道不同,本初子午线(经度 0 度)是一个半圆(半椭圆),从北极延伸到南极,弧线的另一半称为国际日期变更线,定义为东经 180 度和/或西经 180 度。
2.2 MapKit 的坐标投影系统
MapKit 使用墨卡托地图投影系统,这是一种特定类型的圆柱地图投影。在圆柱地图投影中,球体的坐标被映射到圆柱体表面,然后展开以提供平面地图。需要注意的是,在以这种方式展平球体时,原本在两极汇聚的经线会变得平行,导致离赤道越远的陆地越扭曲。不过,墨卡托系统的优点是,两点之间绘制的直线可以得出在地球表面实际导航时的航向。MapKit 使用本初子午线作为其中央子午线。
2.3 MapKit 支持的坐标系统
| 坐标系统 | 描述 |
|---|---|
| 地图坐标 | 是地球球面表示上的纬度和经度,是指定地球上位置的主要方式。使用 CLLocationCoordinate2D 结构指定单个地图坐标值,还可以使用 MKCoordinateSpan 和 MKCoordinateRegion 结构指定区域。 |
| 地图点 | 是墨卡托地图投影上的 x 和 y 值,用于许多与地图相关的计算,因为它们简化了计算中的数学运算。主要在指定自定义覆盖层的形状和位置时使用。 |
| 点 | 是与 UIView 对象的坐标系相关联的图形单位。地图点和地图坐标最终会转换为点,以便在使用 UIView 的坐标系时在视图上绘制。大多数情况下,MapKit 会自动完成这项工作。 |
在大多数情况下,使用的坐标系统由所使用的 MapKit 接口预先确定。当你创建自己的应用并需要存储数据时,地图坐标是精确、便携且存储位置数据的最佳选择。
3. 重要工具介绍
在创建地图应用时,需要了解一些重要工具:
-
MapKit
:与苹果地图交互时使用的框架。
-
CoreLocation
:用于获取位置或利用 GPS 卫星技术实现酷炫功能的框架。
-
MKAnnotationView 类引用
:用于在地图上放置图钉、创建引用、绘制箭头标记或插入图像等注释操作。
-
操作(Actions)和出口(Outlets)
:用于将各种技术结合起来并与用户无缝集成。
在操作过程中,无需深入了解这些复杂工具的工作原理,关键是要学会在合适的时候选择使用它们。
4. 准备工作
4.1 下载必要文件
-
访问网站
http://rorylewis.com/xCode/iPhone%205%20for%20absolute%20beginners%20source%20code%20Xcode%20ios6%20/09_myMapkit_02_files.zip下载本章所需的图像和样板代码。其中包括两个图标文件、四个启动屏幕和一个用于样板代码的 DemoMonkey 文件(Chapter09MapKit.demoMonkey)。 -
若未从该网站获取 DemoMonkey,可从
http://rorylewis.com/xCode/StoryBoarding%20in%20Xcode/Chapter01_Demomonkey.zip下载。将下载的文件解压到桌面。
4.2 观看示例视频
观看视频
www.youtube.com/user/iphoneandipadapps
可能会有所帮助,它展示了如何快速构建这个应用,让你心里更有底。
5. 创建新项目
5.1 选择模板
-
打开 Xcode,按下
⌘ + ⇧ + N,然后点击 iOS 单视图应用模板。 -
为了便于后续操作,将项目命名为
myMapkit_02,并在“设备”字段中选择 iPad,不使用单元测试选项或故事板选项,但要使用自动引用计数。
5.2 导入文件
-
打开从网站下载的
09_myMapkit_02_files文件夹。 -
打开名为
Chapter09MapKit.demoMonkey的文件,前提是已安装 DemoMonkey。
5.3 导入图标和启动屏幕
-
从
09_myMapkit_02_files文件夹中将图标图像拖入图标框。 - 类似地,导入启动屏幕图像到相应的框中。注意勾选“预渲染”复选框,这样在设备上安装图标时,iOS 不会添加标准光泽。
5.4 添加 MapKit 框架
-
点击
+号。 -
滚动选项或在搜索栏中输入
map,选择MapKit.framework,然后点击“添加”或按下Enter/Return。
5.5 整理项目文件
将之前添加的图像文件拖到“支持文件”文件夹中,然后将
MapKit.framework
移动到“框架”文件夹中。养成良好的文件组织习惯,将所有文件存储在正确的文件夹中。
下面是创建项目的流程图:
graph LR
A[打开 Xcode] --> B[按下 ⌘ + ⇧ + N]
B --> C[点击 iOS 单视图应用模板]
C --> D[命名项目为 myMapkit_02]
D --> E[选择 iPad 设备]
E --> F[不使用单元测试和故事板选项]
F --> G[使用自动引用计数]
G --> H[打开 09_myMapkit_02_files 文件夹]
H --> I[打开 Chapter09MapKit.demoMonkey 文件]
I --> J[导入图标图像]
J --> K[导入启动屏幕图像]
K --> L[点击 + 号]
L --> M[搜索并选择 MapKit.framework]
M --> N[点击添加]
N --> O[整理项目文件]
以上就是创建 MapKit 应用的前期准备和基础操作,后续我们将进一步深入探索如何为应用添加更多功能。
6. 深入项目:添加地图功能
6.1 确定目标位置
在这个项目中,以科罗拉多大学科罗拉多斯普林斯分校的计算机科学办公室为例,展示如何在地图上实现图钉掉落效果。当然,你可以选择任何你想要的位置。要实现这一点,需要获取该位置的经纬度值,可从谷歌地图或直接的 GPS 读数获取,互联网上也有许多提供此类坐标的网站,例如
http://itouchmap.com/latlong.html
。
6.2 项目预期效果
提前了解项目完成后的样子很有帮助。完成的应用会在地图上显示一个混合视图,图钉会落在科罗拉多大学科罗拉多斯普林斯分校的工程与应用科学大楼入口旁,图钉旁边会有注释文字,标题为“Chad Mello”,副标题为“UCCS Engineering & Applied Science”。后续还可以控制图钉颜色和掉落动画样式。
6.3 项目操作步骤
6.3.1 项目设置
- 按照前面提到的步骤,下载并解压所需文件,包括图标、启动屏幕和样板代码。
-
打开 Xcode,选择 iOS 单视图应用模板,创建名为
myMapkit_02的项目,选择 iPad 设备,不使用单元测试和故事板选项,启用自动引用计数。
6.3.2 资源导入
-
将下载的图标文件从
09_myMapkit_02_files文件夹拖到 Xcode 项目的图标框中,例如 72×72 px 的标准 iPad 图标。 - 同样,将启动屏幕图像导入到相应的框中,注意勾选“预渲染”复选框。
6.3.3 框架添加
-
在 Xcode 中点击
+号,在搜索栏输入map,选择MapKit.framework并点击“添加”。
6.3.4 文件整理
将图像文件放入“支持文件”文件夹,将
MapKit.framework
移动到“框架”文件夹,保持项目文件的有序性。
下面是添加地图功能的操作步骤列表:
| 步骤 | 操作内容 |
| ---- | ---- |
| 1 | 确定目标位置并获取经纬度 |
| 2 | 下载并解压项目所需文件 |
| 3 | 创建 Xcode 项目 |
| 4 | 导入图标和启动屏幕图像 |
| 5 | 添加 MapKit 框架 |
| 6 | 整理项目文件 |
7. 总结与展望
通过以上步骤,我们完成了一个基础的 MapKit 应用的创建,从简单的地图浏览功能到深入了解地图几何和坐标系统,再到使用各种工具和资源进行项目搭建。这个过程不仅让我们熟悉了 MapKit 的基本操作,还掌握了一些重要的开发技巧。
未来,我们可以基于这个基础项目进行更多拓展。例如,添加更多的地图注释,实现地图搜索功能,或者结合 CoreLocation 框架实现实时定位等。不断探索和实践,我们可以开发出更具实用性和趣味性的地图应用。
下面是未来拓展功能的流程图:
graph LR
A[基础 MapKit 应用] --> B[添加更多地图注释]
A --> C[实现地图搜索功能]
A --> D[结合 CoreLocation 实现实时定位]
B --> E[开发更实用的应用]
C --> E
D --> E
总之,MapKit 为我们提供了强大的地图开发能力,只要不断学习和实践,就能创造出令人满意的地图应用。希望大家在后续的开发过程中取得更多的成果!
超级会员免费看
35

被折叠的 条评论
为什么被折叠?



