了解 mapkit 和 mapkit js 的最新更新。我们将介绍一种新的路线类型——骑行路线,并向你展示如何在网页上启用 3d 环视图像。了解新的 geocoding api 如何支持坐标与地址之间的转换,以及如何使用 address representations api 来获取某一区域最恰当的地址。最后,我们将介绍一种新的地点引用方式,确保你的 app 能与 app intents 无缝协作。

视频封面
视频地址

此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com

MapKit 与 MapKit JS 最新功能解析

在 WWDC 2024 上,Apple 为开发者带来了 MapKit 和 MapKit JS 的一系列重要更新。本文将详细介绍这些新功能,包括新的骑行路线、3D 环视图像支持、改进的地理编码 API 以及全新的地点引用方式。

新功能概览

本次更新主要包含以下内容:

  • PlaceDescriptor:一种新型的地点查找和引用方式
  • 地理编码改进:将 CLGeocoder 功能迁移至 MapKit 框架
  • 地址表示优化:通过 Address Representations API 获取最适合显示的地址格式
  • 骑行路线支持:为地图应用新增骑行路线规划功能
  • 环视 API 增强:在网页中支持 3D 环视图像展示

PlaceDescriptor:灵活的地点引用方式

PlaceDescriptor 是一种结构化地点描述方式,它包含三个核心组成部分:

  1. commonName:地点的通用名称(如”埃菲尔铁塔”)
  2. representations:通用地理信息表示(地址、坐标或设备位置)
  3. supportingRepresentations:可选的非通用信息(如服务标识符)
// 创建带有坐标和名称的 PlaceDescriptor
let descriptor = PlaceDescriptor(
    representations: [.coordinate(coordinates)],
    commonName: "安娜利维娅喷泉"
)

PlaceDescriptor 的优势在于:

  • 无需依赖 MapKit 特定标识符
  • 可与 App Intents 无缝配合
  • 支持多种地理信息表示方式
  • 适用于跨框架交互场景

地理编码与地址表示

地理编码功能已从 CoreLocation 迁移至 MapKit,提供更一致的 API 体验:

// 逆向地理编码示例
let request = MKReverseGeocodingRequest(location: location)
let mapItems = try await request.mapItems

MapItem 提供两种地址访问方式:

  1. MKAddress:包含完整地址(fullAddress)和精简地址(shortAddress)
  2. MKAddressRepresentations:提供多种显示优化方案

正向地理编码同样简单:

// 正向地理编码示例
let request = MKGeocodingRequest(addressString: "1 Ferry Building, San Francisco")
let mapItem = try await request?.mapItems.first

路线与环视功能

骑行路线支持

MapKit 现在支持骑行路线规划:

// 获取骑行路线
request.transportType = .cycling
let directions = MKDirections(request: request)
let response = try await directions.calculate()

环视功能扩展

MapKit JS 现在支持两种环视视图:

// 创建交互式环视视图
const lookAround = new mapkit.LookAround(containerElement, place, {
    openDialog: true,
    showsDialogControl: true,
    showsCloseControl: true
});

开发者可以通过事件监听器管理视图生命周期:

lookAround.addEventListener("close", event => {
    app.closeView();
    event.preventDefault();
});

总结与展望

本次 MapKit 更新带来了诸多实用功能:

  • PlaceDescriptor 提供了更灵活的地点引用方式
  • 地理编码功能迁移至 MapKit 框架
  • 地址表示优化提升了用户体验
  • 新增的骑行路线丰富了导航选择
  • MapKit JS 的环视功能扩展了网页地图能力

这些改进将使开发者能够创建更丰富、更灵活的地图应用。

相关视频

使用 MapKit 充分优化位置相关功能
认识 SwiftUI 版 MapKit
MapKit 的新功能

文档

Adopting unified Maps URLs