《iOS组件与框架——iOS SDK高级特性剖析》——第2章,第2.3节显示地图

简介:

本节书摘来自异步社区《iOS组件与框架——iOS SDK高级特性剖析》一书中的第2章,第2.3节显示地图,作者 【美】Kyle Richter , Joe Keeley,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.3 显示地图
iOS组件与框架——iOS SDK高级特性剖析
MapKit框架为iOS提供了地图用户界面功能,其中的基本类是MKMapView,它显示地图、处理用户与地图的交互以及管理标注(像大头针)和覆盖层(如线路图或突出区域)。要更深入地了解iOS中地图的工作原理,必须明白坐标系。

2.3.1 理解坐标系
在MapKit中,有两个坐标系:地图坐标系和视图坐标系。地图使用墨卡托投影,将3D世界地图投影到2D坐标系。坐标可使用经度和纬度指定。地图视图表示显示在屏幕上的地图部分,它使用标准的UIKit视图坐标,并负责决定在什么地方显示地图坐标指定的点。

2.3.2 配置和定制MKMapKit
在示例应用中,ICFMainViewController包含一个地图视图,它在地图上显示用户的位置,并允许用户滚动和缩放;在Interface Builder中,将这个地图视图配置成了标准类型。ICFMainViewController有一个分段控件,让用户能够调整地图类型。


8fa4fd1ab4dbb907fd5174bc1dfea05e4b65885d

除设置地图类型外,另一种常见的定制是设置地图显示的区域。在ICFMainViewController中,有一个名为zoomMapToFitAnnotations方法,它检查用户当前喜欢的地点,调整地图的大小和中心位置,以覆盖所有这些地点。这个方法首先设置默认的最大和最小坐标。


5c29aa48c8e769575bf22c1f31f373df2b017758

接下来,这个方法获取地图上所有的标注(这将在 2.4 节更详细地介绍),并找出这些标注中最大和最小的经度和纬度。


e354ad65c02640878cd058777dd2c728e53867fd

如果将参数animated:设置为YES,可以动画方式放大地图,就像放大操作是用户执行的那样;如果将它设置为NO,将瞬间放大地图,而没有动画效果。

2.3.3 响应用户交互
可给MKMapView指定委托,以便对用户与地图交互做出响应。用户与地图的交互包括平移和缩放、拖曳注释(annotation)以及用户轻按标注(callout)时进行响应。

用户平移或缩放地图时,将调用委托方法mapView:regionWillChangeAnimated:和mapView: regionDidChangeAnimated:。在示例应用中,不需要采取额外的措施来缩放地图和调整注释。然而,如果应用在地图上显示了大量信息或显示的信息随缩放等级而异,就可使用这些委托方法来删除不可见的地图注释以及添加新出现的注释。在示例应用中,这个委托方法演示了如何获取新的地图区域,这可用来查询要在地图上显示的内容。


a8df1d4beef82d3abd87bedf0ee09bd1665fa51e

如何在用户拖曳注释或轻按标注时做出响应,这将下一节介绍。

相关文章
|
1月前
|
移动开发 安全 数据安全/隐私保护
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
是否有其他框架可以在iOS设备上进行机器学习?
是否有其他框架可以在iOS设备上进行机器学习?
21 1
|
3月前
|
存储 数据建模 iOS开发
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
33 1
|
3月前
|
定位技术 iOS开发
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
19 0
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
27 0
|
3月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
101 0
|
4月前
|
测试技术 API 开发工具
|
4月前
|
分布式计算 Hadoop Java
hadoop sdk 优化小结(裁剪、集成kerberos组件、定制等)
hadoop sdk 优化小结(裁剪、集成kerberos组件、定制等)
41 0
|
5月前
|
小程序 开发工具 Android开发
Donut多端框架小程序打包适配ios和安卓app
腾讯新出了一个 Donut 多端框架,可以直接将微信小程序转成 ios 和 安卓 app,小程序开发者工具里也集成了 app 相关升级、调试和打包的功能,终于可以一套代码开发出3个客户端了!
127 0
Donut多端框架小程序打包适配ios和安卓app
|
5月前
|
移动开发 网络协议 安全
基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v8.0版已发布
MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持 UDP 、TCP 、WebSocket 三种协议,支持 iOS、Android、H5、标准Java、小程序、Uniapp,服务端基于Netty编写。
70 0