用途:在 iOS 17+ 的 SwiftUI 应用中构建地图与位置感知功能,并审查已有地图/定位代码。核心 API 包括 Map 与 MapContentBuilder、CLLocationUpdate.liveUpdates() 流式定位、CLMonitor 地理围栏、CLServiceSession(iOS 18+)授权管理。
主要能力:地图视图支持 Marker、Annotation、MapPolyline、MapPolygon、MapCircle 与 MapCameraPosition 相机控制、.mapStyle() 样式、.mapControls{} 控件及 selection 选择绑定;定位使用 CLLocationUpdate.liveUpdates() 异步序列替代 CLLocationManagerDelegate;另含 CLGeocoder 正/反向地理编码、MKLocalSearchCompleter 自动补全与 MKLocalSearch 完整搜索、MKDirections 路线与 ETA 计算(含 .cycling);iOS 26+ 提供 MKGeocodingRequest、MKReverseGeocodingRequest 与 PlaceDescriptor(需 import GeoToolbox)。
使用要点:Info.plist 需添加 NSLocationWhenInUseUsageDescription;iOS 18+ 可创建 CLServiceSession 管理授权;定位任务需保存并在不需要时取消,并按水平精度等条件过滤无效或过期定位;搜索输入需防抖(如 300ms)。
适用场景:地图展示与交互、周边搜索、导航路线显示、地理围栏、后台定位等 iOS/macOS 地理功能。
限制与注意事项:CLPlacemark 属性均为可选需空值处理;授权被拒需提供跳转设置的提示;CLMonitor 最多 20 个条件且需保持实例存活;后台定位使用 CLBackgroundActivitySession;资料未提供具体版本兼容矩阵之外的价格或其他平台信息。