我决定从将 MKMapView 包装成 UIViewRepresentable 切换到 SwiftUI 中的新Map()
功能。
我能够正确显示一个MKMapRect
,Map()
但我无法在MKPointAnnotation
那里显示两个。我在这些注释之间的路线也没有显示
它要求我提供一个RandomAccessCollection
和一个(Identifiable) -> MapAnnotationProtocol>
,但我不知道该放什么。
知道我应该放(Identifiable) -> MapAnnotationProtocol
什么吗?
import SwiftUI
import MapKit
extension MKPointAnnotation: Identifiable { }
struct ItemView: View {
@ObservedObject var itemViewModel: ItemViewModel
@State var coll = [MKPointAnnotation]()
func onAppear() {
let requestAnnotation = MKPointAnnotation()
requestAnnotation.coordinate = CLLocationCoordinate2D(latitude: 46.2004781, longitude: 6.1346497)
requestAnnotation.title = "Package"
let destinationAnnotation = MKPointAnnotation()
destinationAnnotation.coordinate = CLLocationCoordinate2D(latitude: 47.1420446, longitude: 9.5204032)
destinationAnnotation.title = "Destination"
coll.append(requestAnnotation)
coll.append(destinationAnnotation)
}
var body: some View {
VStack {
if let mapRect = itemViewModel.route?.polyline.boundingMapRect {
Map(mapRect: .constant(mapRect), annotationItems: coll) { point in
MapAnnotation(coordinate: point.coordinate) {
Text(point.title ?? "")
}
}
}
}
.onAppear(perform: self.onAppear)
}
}