大多数浏览器和
Developer App 均支持流媒体播放。
-
MapKit 的新功能
和我们一起打开 MapKit 的全新维度。我们将介绍如何升级您的 App,以使用最新的地图并对细节丰富的 3D 城市体验提供支持。学习如何利用 Overlay 对数据进行可视化,同时确保它们流畅地集成到 3D 地图。我们还将讨论如何使用 Selectable Map Features 和 Look Around API 来打造交互式的沉浸体验。
资源
- Apple Developer: MapKit JS
- Explore a location with a highly detailed map and Look Around
- Interacting with nearby points of interest
- iOS and iPadOS Feature Availability
- MapKit
- Maps for Developers
相关视频
Tech Talks
WWDC22
-
下载
Eric: 大家好 欢迎来到 WWDC 我是 Eric 我是地图 App 团队的工程师 今天 我和同事 Yingxiu 一起 与大家共同探索下 MapKit 的新内容
Apple 发布全新的地图 App 及其沉浸式的 Look Around 功能 已有三年
最初这一新地图和 Look Around 仅支持美国地区 现已新增 覆盖加拿大 大多数欧洲国家 日本等地区
去年 Apple 地图 App 进行了全新升级 推出了增强的 3D 地图体验 有详细的 车辆变道 人行横道 自行车道等信息 以及精美绝伦的 3D 地标模型 如轮渡大厦
地图上这些详尽的细节 为用户提供了 前所未见的内容和精确体验 3D 的地形高差 所带来的逼真感也是无可比拟的
今年 MapKit 可以将 Apple 地图 App 的功能 也集成到您的 App 中 让您的用户也能极尽细节地 探索世界
今天的内容将包括 MapKit 几个新功能 首先 我们谈下如何用 地图配置 API 应用这一全新的地图
接下来 我们将会介绍 我们针对 Overlay APIs 所做的 各种改进 从而将您的内容 与地图无缝集成
我们还会讨论全新的 混合模式支持 以及您可以如何利用这一模式 以进一步增强 地图内容的显示 然后 我们会介绍通过使用我们 全新的 Selectable Map Features API 增加您地图互动性的方法 最后 我们会探讨如何直接在您的 应用程序中 整合沉浸式的 Look Around 体验 我们本次的内容非常丰富 准备好进入第一个话题 … 集成新地图和 使用地图配置 API
在您的 iOS macOS 和 tvOS App 中 集成新地图 实在是太容易了 您只要使用新的 SDK 重新编译您的 App 就能自动获得全新的 Apple 地图 feature 包括在可用地区的 3D 城市体验 对大部分 App 来说 只需要简单的重新编译即可
当然 在部分情况下 您可能需要对地图的显示 有更多的控制 在 iOS 15 中 您是通过 MKMapView 的不同属性 来配置地图的 而在 iOS 16 中 我们软性摒弃了这些属性 推出了全新的 地图配置 API 来取代这些属性
MKMapConfiguration 是 全新地图配置 API 的核心类 MKMapConfiguration 是 一个抽象基类 它有三个具体子类
MKImageryMapConfiguration 用于 显示卫星风格的影像 MKHybridMapConfiguration 用于 在影像的地图上添加地图特征 比如 道路标签和兴趣点
MKStandardMapConfiguration 用于 显示完全用图形描绘的地图 这三种地图配置听起来应该不陌生 因为它们 和我们已有的地图类型一样
地图配置的基类支持 elevationStyle 属性 它的值可以是 flat 或 realistic
flat 风格的地图是平面的 道路 包括桥梁和立交桥 都是扁平呈现的 elevationStyle 属性的默认值是 flat
realistic 风格的地图中 地形是按现实世界的 实际海拔来呈现 如丘陵和山脉 道路展现了现实世界中的高度细节
现在 我们来仔细看看 地图配置的子类
MKImageryMapConfiguration 只显示卫星影像 没有额外的地图 feature 因此没有其它属性
MKHybridMapConfiguration 有额外的属性 用来控制过滤特定类别的兴趣点 以及是否显示交通路况
MKStandardConfiguration 支持 emphasisStyle 属性 它的值可以是 default 或者 muted
从其命名可以知道 除非另作说明 否则默认使用 default 风格
muted 风格柔化了 地图细节的对比度 可以让用户的注意力更多地 集中到您显示在地图上的 额外的图形信息上 MKStandardMapConfiguration 也有额外的属性 用来控制过滤特定类别的兴趣点 以及是否显示交通路况
我们可以总结下可用的地图配置类 及其属性
这个全新的 API 确保您只能 用支持的选项组合进行配置 您也可以以原子操作的方式 改变地图配置 我们认为这是对当前 API 的 重大改进
概括下我们刚刚的内容 这一表格展示了 新的 MKMapConfiguration 类和 MKMapType 属性之间的关联
全新的 3D 城市体验的地图 对硬件有一定要求 在 iOS 中 新地图需要 搭载 A12 或更新芯片的 iPhone 和 iPad 在 macOS 中 新地图需要 搭载 M1 或更新芯片的电脑
在 3D 城市体验不可用地区 地图会自动调整为 扁平风格新地图
在不支持的硬件上 新地图都会以扁平风格显示
在搭载 M1 的Mac 中 您只需在 Xcode 中改变 OS 版本 就可以模拟两种不同的体验 我们鼓励您这两种体验都尝试一下 确保您的 App 在所有设备中 都能完美运行
3D 城市体验在全球许多大都市区 均可使用
我们还会陆续增加新的城市到该列表中 您可以去这个讲座的 相关链接的网页上 了解更多 3D 城市体验的信息 那些链接中也包括了如何集成新地图 和使用地图配置 API 的内容
现在我们来说下 Overlay MapKit 在很多年前就已经支持 多种样式的 Overlay 在 iOS 16 中 我们改进了已有的 API 让您的 Overlay 可以与地图无缝集成 我们首先快速回顾下 Overlay 层级
Overlay 可以在两个不同的层级上渲染 aboveRoads 和 aboveLabels MapKit 的 Overlay 插入函数都支持 在插入时指定渲染的层级
aboveLabels 将您的 Overlay 渲染到 所有元素之上 包括标签 由于标签提供了重要的上下文信息 我们建议您只在极端情况下 使用 aboveLabels 的方式 比如,您完全不希望数据 与地图有交互的情况下 如果您想要实现的是让内容 显示在地图之上 您可能需要把 emphasisStyle 属性设置为 muted 或我们稍后讲到的混合模式
aboveRoads 指的是 Overlay 呈现在地形之上 包括道路 地表覆盖 或者水域 然而 它会在标签以及 树木和建筑的之下显示 稍后我们会再详细了解 aboveRoads 是 iOS 16 中 全新的默认模式 接下来 我们来谈谈 iOS 16 中推出的新功能 透明建筑
不管您的 Overlay 级别 是 aboveRoads 还是 aboveLabels 您的 Overlay 在 无倾斜的顶视图中 总是渲染在建筑之上 然而 我们针对在倾斜地图中 使用 aboveRoads 的体验 做了一些改进
地面物体 如树木 建筑 在 Overlay 之上显示时 会自动以透明的方式渲染 从而不会完全遮挡 Overlay 其 α 值会随着地图的倾斜角度 不同而发生改变 如果我们把地图还原为顶视图 此时倾斜角度为 0° 这些遮挡的地面物体 将会从视图中消失 让您的 Overlay 完全可见
透明建筑也适用于半透明的 Overlay Overlay 的 α 值 会与透明建筑的 α 值叠加在一起 针对 Overlay 我们还做了一个改变 在真实地形的地图中 添加 Overlay 时 MapKit 会自动将地图 转换为扁平风格 在您移除了所有 Overlay 之后 地图又会自动还原为立体风格 这一规则有一例外 就是 MapKit 的 directions API 生成的 Overlay 这些 Overlay 会自动贴合地形显示 现在 有请 Yingxiu 来为大家展示 Yingxiu: 谢谢 Eric 大家好 我是 Yingxiu 我是地图 App 团队的工程师 我会为大家展示我们 全新的 MapKit 功能 以及用我们最新的 API 搭建 一个完美的地图体验有多简单 我会用我们的示例 App 来展示 用户如何租踏板车 环游旧金山
我们用一个 table view 来显示 这个 App 的各个功能 “Operating Area” 可以让用户 看到哪里能租到踏板车 “Ride” 可以带用户环游金门大桥 “Explore” 为用户提供 旧金山市中心的互动地图 用户可通过这一地图 探索海边的景点 “Highlights” 可以让用户 近距离查看那些必去的景点 我们在这一讲座中 会实现和升级这些功能 现在开始吧
首先 我以 Operating Area 功能为例 给大家看下应用新地图 有多简单 然后为您介绍 我们针对 Overlay 所做的一些改进 我已经在 Xcode 中 打开了这一项目 我们用 iOS 16 SDK 重新编译 看下结果如何
好了 我们已经集成了全新的地图 feature 新的地图视图有着非常丰富的细节 以及地形上的光照和 山丘阴影的效果 让我们继续放大 您可以看到
建筑 树木 以及地标
现在我们添加一个多边形 Overlay 将我们的操作区可视化
我已经有了操作区的多边形数据 视图加载后 我们首先设置 region 和 cameraBoundary 确保我们对着正确的区域
然后 只要添加 Overlay 就可以了
我们先编译运行一下看看
多边形的 Overlay 从上往下看时是不透明的 当我们继续放大 并倾斜视角 建筑开始显现 随着倾斜角度增大 透明度也会增加 这一效果仅在使用 aboveRoads Overlay 层级时才会出现 如果您想有 透明的建筑和树木透明度 要记得选择正确的 Overlay 层级
Overlay 看起来不错 但我希望 地图在不倾斜的时候 也能显示 我们回到代码 将其设置为半透明
我们调整 α 值为 0.8
现在我们就有了一个透明得 Overlay 即使没有倾斜 我也能看到 道路和建筑 如果我继续放大 倾斜地图 透明度还是会增加 看起来很不错 这就是多边形 Overlay 接下来 我向大家展示 如何整合真实地形 来显示有高低差的路线 以实现我们的 “Ride” 功能 让用户可以游览金门大桥
我们首先配置地图视图 我们可以用代码改变 elevationStyle 也可以打开 Interface Builder 右边的 Inspector 面板
就可以看到可用的地图视图的配置选项 在 “elevation” 处勾选 “realistic”
现在,让我们添加路线
我们希望在用户打开 显示路线 开关时 能显示一条路线 我们也会让相机对焦到路线上 并随着路线移动
因为我们要显示的 是金门大桥的路线 我们用 Presidio Park 入口 作为起点 Battery Spencer 作为终点
地图视图加载后 我们创建标注 以标记起点和终点
设置坐标和名称 并加到一个标记数组中 然后把数组添加到地图视图
现在 我们可以看看路线折线了
但是普通的Overlay 会让地图扁平化 MapKit 的 Direction API 返回的折线 将保留逼真的地形
在这个 IBAction 函数中 如果开关打开 我们将用前面定义的坐标 建立位置标记
然后我们用源位置和目标位置 创建寻路请求 最后 获取路线
如果获取操作成功 只要将路线折线添加为 Overlay 即可
好了 我们重新编译下 看看结果如何吧
您能看到标记自动升级到 新的有斜度的外观 并且完美呈现了正确的高度 当我打开路线显示 摄像头倾斜 然后 就有了更完美的视角
如您所见 路线是跟随 地形升高的 当导航到复杂的十字路口时 这就非常便捷了 它还能跟随桥梁上的道路 还有 注意桥柱间呈现的 路线的细节
最后 地图真正倾斜后 您可以看到树木前面呈现的 蜿蜒的路线 看 没有树木的地方 路线颜色也消失了 我们缩小看看这里是什么
好 这部分的路线是穿过隧道的 所以会以透明的方式显示 搭载 A12 的 iOS 设备支持 ElevationRealisticStyle 和 有高低差的路线 如果我在更早的设备上 运行同样的 App 就会自动转变为 2D 地图上的 2D 路线 在 3D 城市体验中添加有高低差的路线 就是如此简单 接下来 再次有请 Eric Eric: 谢谢 Yingxiu 这场骑踏板车环游金门大桥的旅程 实在是令人叹为观止 以上是 MapKit 中关于 Overlay 的新内容
接下来要介绍的是混合模式 这一全新 API 为您的 Overlay 的外观 和体验提供了更多的控制 解锁了一系列创新的可能性
我相信你们大多数人已经熟悉 照片编辑类 App 和 Apple CoreGraphics API 中的 混合模式 在一个混合操作中 两个图层会按照 混合模式指定的 一套公式来进行叠加 现在 我们来看看一个 如何在 MapKit 环境下 使用混合模式的案例
在这个场景中 我想要重高亮 地图中间的 旧金山的 Presidio National Park 区域 首先 创建一个 裁剪成 Presidio 形状的 Overlay 覆盖整个地图区域
我还没有使用混合模式 这只是一个简单的 Overlay 就像一个很大的方形甜甜圈 接下来 我在 Overlay 中 使用色相混合模式 并用灰色填充 这可以减少 Presidio 以外的 地图的饱和度 接下来 复制这一 Overlay 使用强光混合模式 并用深灰色填充
这可以使 Presidio 周围的区域 颜色加深 这看起来已经很不错了 但是 我们还要添加一个 Overlay 这次 我们增加 Presidio 形状的 Overlay 使用饱和混合模式 并用黄色填充 额 这不是我想要的效果 这颜色太亮了 我们试下别的 我们试下颜色加深混合模式 使用灰色填充
哇喔 看起来好多了 完美 现在 我们来看看代码
要使用刚刚看到的效果 我们在 MKOverlayRenderer 中 增加一个 blendMode 属性 您只需要在 overlay 渲染器里设置 想要的CoreGraphics 混合模式 就可以了 如之前所说 混合模式 和顺序相关 栈底部的 Overlay 与地图混合 倒数第二个 Overlay 在前一个混合操作的基础上 再次混合 以此类推 在 MapKit 中 Overlay 的顺序 是在插入时决定的 MKMapView 提供了很多 overlay 插入函数 它们都支持在绝对的或相对的位置插入 overlay
MapKit 支持各种不同的混合模式 我们今天无法逐一介绍 我鼓励大家讲座之后 可以都尝试一下 以上就是混合模式的内容了 如您所见 混合模式是控制地图样式的 强大工具 您可以使用它来 高亮某些地理区域 同时降低其它区域的对比度 来突现出那些区域 它能做的还不仅于此
接下来 我们来看下Selectable Map Features的功能 这一功能呼声很高 我很高兴终于能与大家见面了
如果您的 App 中 已经使用了 MapKit 那您可能会用标注来显示城市位置 兴趣点或者是某些实体
除非您使用了兴趣点过滤 您用来添加的标记的地图中 已经包含了一些 Apple 提供的简单标注 到目前为止 您的用户只能 与您提供的标注互动 在 iOS 16 中 这一切即将改变 使用我们全新的 Selectable Map Features功能 API 您现在可以让用户 选择地图上的功能
Selectable Map Features 里的 Feature 类型有 兴趣点 如商店 餐厅和地标建筑 地理区域 如城市和省份 以及地表特征 如山脉和湖泊
在您的 App 中使用 Selectable Map Features功能 您只需要如下几个步骤 首先 配置您希望可选的 feature 类型 如我刚刚介绍的 一共有三个主要的 feature 类型 您如果让这三种类型 全部在 App 里都可以交互 可能没有什么意义 对于兴趣点 feature 您也可以使用我们现有的 过滤 API 来限制可以显示的兴趣点类别 从而实现可选的 feature
其次 实现 MKMapView 的 代理回调函数 来处理选择事件 您可以自由选择处理这些事件 您可能想控制选择的 feature 如何呈现 或者您可能想显示额外的 UI 来响应选择事件
其三 您会希望在 您的 App 的用户界面上 请求和现实额外的地点信息 嵌入在地图 feature 中的信息 仅限于屏幕的可见范围之内
为了给用户提供所选地点的 更多内容 您需要请求额外信息 让我们通过各个步骤的实现 来了解这个全新的 API
首先配置哪个地图 feature 是可选的 使用新的 selectableMapFeatures 属性
您可以使用包含兴趣点 地理区域和地表特征的任意组合 一旦配置好了可选的地图 feature 如果用户点击这些 feature 您就会收到新的代理回调 让您可以自定义选择行为 您收到的第一个回调就是 新的 didSelect annotation 回调 这一回调函数可供您 使用稍后介绍的全新请求 API 来请求地图条目有关的额外数据
您收到的第二个回调是 已有的 viewFor annotation 回调 您可以用它来定制视图 从而在选定状态中显示 我们为这个已有的 API 增加了一个全新的标注类型 称之为 MKMapFeatureAnnotation 在用户选择地图 feature 时 这个类会被传给标注视图
MKMapFeatureAnnotation 类有许多属性 您可以通过查看 featureType 属性 来判断 feature 的类型是兴趣点 地理区域 还是地表特征
如果地图 feature 是兴趣点 通过 pointOfInterestCategory 属性 您可知道这是哪种类型的兴趣点 通过 iconStyle 属性 您可获得关于图标的额外信息 比如 背景颜色 和图标图片
我们来看一个 如何使用 viewFor annotation 回调 来自定义标注视图的案例
如果您想要获得和地图 App 一样的选择样式 您只需要 返回 nil
如果您想自定义选择样式 您可以返回一个标注视图 这和您实现自己的标注是相同的方式
MKMarkerAnnotationView 是一个不错的选择 它能为您提供和地图 App 一样的气泡样式 和渐变效果 您也可以指定颜色和图标
在这个示例中 我用了 从 feature 的图标风格中 获得的图片 仅仅改了一下颜色 让其与 App 的色调相匹配
如果您想全部都自定义 可以使用您创建的 任何标注视图子类 如您刚看到的 您可以使用 feature 标注 来获取选中 feature 的视觉信息 通过将 feature 标注传递给 全新的 MKMapItemRequest API 您也可以为选中的 feature 获取一个地图条目
地图条目里有关于地点的 额外的元数据 如地址 名称 电话号码 URL
如果您的用户想要了解的 额外的元数据 在 MapKit 中不可用时 地图条目也提供了 跳转至地图 App 的功能
这部分 我再次有请 Yingxiu 为我们演示 Yingxiu: 谢谢 Eric
Eric 刚刚和大家介绍了 Selectable Map Features 我来给大家演示下 使用这个 API 有多么简单
让我们继续实现示例 App 的 Explore 功能 我们想要用户可以探索海边的 一些有趣的地方 如果他们点击兴趣点 将会弹出标注 我们会为点击的位置播放镜头动画 在底部显示信息卡
首先 我们过滤地图上的兴趣点 移除与我们的行程不相关的类别
除了在代码中应用过滤 我们还可以在 Interface Builder 的 Inspector 中设置 我们选择地图视图 打开右边的 Inspector
我们选择排除过滤器
然后选择不需要的类别 比如 机场 汽车租赁 医院和洗衣店
现在地图视图上只剩下 我们想要的那些兴趣点了
启用 Selectable Map Features 很简单 我们只需要指定 一个想要的可选 feature 的选项集
在这个示例 App 中 我们只用了兴趣点 但别忘了 我们也支持 可选的地表特征 和地理区域
我们可以用已有的 代理方法 mapView viewForAnnotation 来为 feature 标注创建一个视图
这里 我们暂时只返回 nil
以使用 MapKit 默认提供的 有着渐变色的标注 我们稍后会回来进行定制
如果标注处于选中的状态 新的代理回调 mapView didSelectAnnotation 会 通知我们
我们用这一功能来实现镜头动画 并放大选中的 feature
首先 我们把 annotation 转换为 featureAnnotation 然后创建一个地图条目请求
这是一个通过 feature 标注 获得额外地点信息的 全新 API
我们发送请求
一旦获取信息成功 我们会通过镜头动画移动到地图条目上
镜头动画结束后 我们会把 feature 条目的细节 显示在一张信息卡上
重新编译看看效果如何
我们选一个海边的兴趣点
渐变的标注出来了 镜头移动到标注位置 然后信息卡出现 这是一个博物馆 这是 URL 如果感兴趣的话 我们可以进一步了解 这里有详细地址
如果这是个地标建筑 就能看到其精美的图解
现在回到代码 为选中的状态 自定义我们的标注
我们创建一个 MKMarkerAnnotationView 来替代 nil 我们把 annotation 转换为 featureAnnotation 这样可以使用其中的具体数据 来自定义视图
我们给标注加上略带紫色的色彩 让它和 App 的风格一致
我们也可以定制标注的字形
SelectedGlyphImage 是被选中状态的标注字形
GlyphImage 尺寸则要小一些 是未被选中状态的标注字形
我们推荐给它们指定相同的字形 这样从非选中状态到选中状态的 过渡才比较自然
我们使用 featureAnnotation 中的 iconStyle 图像
MKIconStyle 是 iOS 16 中的 一种新的类型 用来保存选中的兴趣点的图标和颜色信息 重新编译 看看效果如何
不错 现在我们有了一个 与 App 色调相匹配的标注了 它仍然使用了 Apple 的图标
现在您了解了如何在您自己的 App 中 使用 Selectable Map Features 和自定义标注了 现在 我们重新有请 Eric Eric: 谢谢 Yingxiu 如您所见 Selectable Map Features API 让您的用户可以用一种全新的方式 与地图互动 MapFeatureAnnotation 类 与 MapView 代理回调函数 相结合 让您可以自定义 选中项的外观和特性 而 MapItemRequest 让您可以 获得一个地图条目的 feature 信息 从而可以访问 关于选中的地图 feature 的 额外信息 接下来 我们来看看 Look Around 功能
iOS 13 的 地图 App 就推出了 Look Around 倍受欢迎 您可以使用 Look Around 获得沉浸式的实地体验 Look Around 的影像 极尽细节 利用 3D 模型提供了其它地图 都无法比拟的真实感
Look Around 已开放 全球多个地区 包括这些城市 和国家
我们会持续增加新地区的支持 您可以在本次讲座附带的链接中的 可用特性网页上 查找 Look Around 部分的内容 来了解更多 在 iOS 16中 我们将 Look Around 加入到了 MapKit 中 只需简单三步即可应用
首先 检查数据在目标区域 是否可用 即使 Look Around 在您的目标区域可用 但并不是每个位置的街道 都可见 因此 Look Around 影像 也有可能不可用 确认 Look Around 数据可用后 您需要将该数据 传送到 Look Around View Controller 或 Look Around Snapshotter
最后 如果 Look Around 数据可用 您可以更新 App 界面 来显示 Look Around 预览 我们看看完成这三个步骤 您所要用到的新的 API
尝试显示 Look Around 预览 的第一步是 检查数据的可用性 因此 您需要 创建 MKLookAroundSceneRequest 这是 iOS 16 新推出的类 您可以通过坐标或地图条目 初始化一个新的实例
接下来 是获取场景属性 这是一个可选的异步属性 如果数据可用 会返回一个场景实例 如果数据不可用 返回的是 nil 如果请求出错 会抛出一个错误
MKLookAroundScene 是无属性的 黑盒对象 它的功能是作为一个令牌 确保 Look Around 在 请求区域的可用性
要显示一个可交互的 Look Around 场景预览 您只需将场景 作为构造参数传给 新的 MKLookAroundViewController 实例 或者将其赋给已有实例的 可以读写的 scene 属性 或者 如您需要静态图像 也可以将场景 作为构造参数传给 新的 MKLookAroundViewSnapshotter 实例 随后读取其 snapshot 异步属性
MKLookAroundViewController 类 可让嵌入较小尺寸的 Look Around 静态预览 变得更加简单 用户还可以点击预览 进入全屏的 Look Around 交互会话
现在 我们再次有请 Yingxiu 为我们演示将其整合到一起 是多么简单 Yingxiu: 谢谢 Eric Eric 给我们展示了 MapKit 中 强大的 Look Around 体验支持 接下来 我为大家演示 将其整合到我们的示例 App 中 有多么简单 在此之前 我们先了解 示例 App 的最后一个功能 Highlights 用户可以看到必去地点的 真实场景
在屏幕顶部的分段控件中 已经有了旧金山的一些 地标性建筑的名称
用户点击的时候 我们希望可以将镜头移动到 选中的位置
并且在底部显示 Look around 预览 供用户跳转到全屏界面 我们开始吧
首先 需要为我们的容器视图 添加一个 Look Around 预览
我们先到尺寸检查器
为其指定一个位置和尺寸
一开始这个预览窗口要隐藏起来 所以我们打开属性检查器 勾选 Hidden
接下来 我们要 创建 Look Around View Controller
将其嵌入容器视图
和其它 segue 一样 我需要为其指定一个标识符
我们命名为 “presentLookAroundEmbedded”
然后导入到代码中
命名为“preview” 稍后会再让其显示
现在 我们已经声明了一个 Look Around view controller 只需要在 prepare 函数中获得 View Controller 的实例
确保 segue 标识符匹配
然后 在分段控件的 action 函数中 我们用地标名称 创建一个本地搜索
如果请求成功 将会获得 用于接下来的镜头动画 和 Look Around 场景的 地图条目
镜头动画方面 我们首先需要用新的 API 创建一个镜头 MKMapCamera
来看向地图条目 我们使用地图视图边框大小 作为可见大小 将允许倾斜设置为 true
这样就能对地标使用倾斜视图 而其它地区使用顶视图
把镜头赋给 camera 就行了
镜头动画结束以后 就可以显示其 Look Around 预览了
首先 我们需要确定 这一地图条目的 Look Around 数据是否可用 为此 我们需要用 新的 LookAroundSceneRequest 类 创建我们的请求 传入地图条目
然后执行请求
如果获取场景的请求成功 只要将场景 赋给我们的 Look Around View Controller 如果没有错误 但场景返回 nil 意味着 Look Around 数据 在请求的位置不可用
最后 不要忘了显示预览
我们看下在 App 中 的效果如何吧
我们试下轮渡大厦
来了 轮渡大厦是地标建筑 所以我们能看到 这一精美绝伦的 镜头视角 最后 Look Around 预览出现 我们试下另一个地方 龙门
龙门不是地标建筑 所以我们看到的是 顶视图
我们点击预览 进入全屏
这是一个交互式视图 所以我可以操作导航
在 Look Around 全屏视图中 我能看到这些精美的图标 和标注
在您的 App 中添加 强大的 Look Around 体验 就是如此简单 我们再次有请 Eric Eric: 谢谢 Yingxiu Look Around 的 Interface Builder 支持 让其开发更便捷 我们今天探索了很多话题 包括自动集成新地图 新的地图配置 API Overlay 的新行为和改进 以及类似 Selectable Map Features 和 Look Around 这样的新特性 我们相信大家都一致认同 可以通过地图体验 让您的 App 更上一层楼 我们迫不及待想看到您的成果了 在结束之前 还有几点 我想跟大家分享
一如往常 您的反馈可以帮助我们 进行下一步的优化 所以请使用反馈助理 给我们发送 bug 报告 以及对您 App 最有用的功能
另外 我们更新了现有的示例代码 里面包含了我们刚刚所讨论的内容 欢迎大家去查看
最后 我们发布了 全新的 REST API 您也可以去了解一下 我们相信 如果您想将您的 地理编码 ETA 确认或者其它调用 转到服务器上的话 这些 API 就能提供帮助
更多细节 请查看题为 “Meet Apple Maps Server APIs” 的讲座
我再次谨代表地图团队 感谢大家的观看 齐: 祝您有一个愉快的 WWDC 之旅
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。