用途:为 iOS 地图开发提供 MapKit API 参考,同时覆盖 SwiftUI Map(iOS 17+)与 MKMapView(UIKit)两套写法。
主要能力:
- SwiftUI Map:Map(position:) 声明式建图,MapCameraPosition 控制相机(automatic、region、camera、userLocation、item、rect),支持程序化与关键帧动画;mapStyle(standard/imagery/hybrid 及 elevation、emphasis、兴趣点过滤)、mapControls、mapInteractionModes、selection 与 onMapCameraChange。
- 地图内容:Marker、Annotation、UserAnnotation,MapCircle、MapPolyline、MapPolygon 等覆盖物,以及 mapItemClusteringIdentifier 聚类。
- MKMapView:UIViewRepresentable 包装、makeUIView/updateUIView 生命周期、delegate 方法(viewFor、rendererFor、regionDidChangeAnimated、didSelect、clusterAnnotationForMemberAnnotations),并强调复用与差分更新避免内存与循环问题。
- 标注:MKMarkerAnnotationView 与 MKAnnotationView 的 glyph、tint、displayPriority、callout 与复用队列用法。
- 搜索:MKLocalSearchCompleter 实时补全、MKLocalSearch 完整搜索,含 resultTypes(address、pointOfInterest、physicalFeature、query)与兴趣点过滤。
- 路线:MKDirections 计算路线与 ETA,transportType 支持 automobile、walking、transit、any,可读取 polyline、expectedTravelTime、distance、steps 等。
- Look Around:通过 MKLookAroundSceneRequest 检查某坐标是否可用。资料还提及 MKMapSnapshotter、GeoToolbox 等,但未展开细节。
使用方式:以 SwiftUI Map 为主路径,需要 UIKit 控件或既有代码时用 MKMapView 包装。搜索应复用 completer 实例,MKLocalSearch 受苹果限流,建议每秒不超过约 1 次。
适用场景:iOS 地图展示、标注与覆盖物、地点搜索与自动补全、路线与 ETA、街景预览等开发参考。
限制:资料要求 iOS 17+ 的部分 API 不可用于更低版本;MKLocalSearch 有速率限制,超限会返回错误;MKMapView 更新需防止无限循环并做标注差分。相关技能:axiom-mapkit 提供决策树与反模式,axiom-mapkit-diag 提供基于症状的排错。价格与授权信息暂未提供。