ios - SwiftUI map 显示注释

标签 ios swift swiftui xcode12 ios14

我决定从包装 MKMapView 到 UIViewRepresentable 切换到新的 Map()在 SwiftUI 中。
我能够正确显示 MKMapRectMap()但我无法显示两个 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)
    }
    
}

最佳答案

你不需要做MKPointAnnotation了。目前,在 Xcode 12.0 Beta 中,SwiftUI 提供了三个结构体来满足 MapAnnotationProtocol :

  • MapAnnotation
  • MapMarker
  • MapPin
  • RandomAccessCollection应该是采用 Identifiable 的对象的任何集合(数组都可以) .这些在 Map 的最后一个参数中用作块的参数初始化程序。
    Map(coordinateRegion: $container.region, 
        annotationItems: container.annotationLocations) { 
            (location) -> MapPin in
                MapPin(coordinate: location.coordinate)
        })
    

    关于ios - SwiftUI map 显示注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62543034/

    相关文章:

    ios - 如何在 SwiftUI 中设置与 superview 成比例的高度和宽度?

    iphone - uiimage 未正确放入 subview 中

    ios - 我如何调用这个复杂的 NSURLSession?

    ios - __NSCFConstantString objectForKey 无法识别的选择器发送到实例错误

    swift - 如何在 Swift 中用图像填充表格单元格

    ios - 如何完全覆盖导航栏的后退按钮操作?

    ios - "project.app"需要-Onone Swift 优化级别来使用预览

    macos - SwiftUI MacOS 给出错误 : Undefined symbol: _main

    ios - 如何在 xamarin ios native 中将所有屏幕尺寸的图像水平居中

    ios - 我想在 iOS tableview 中实现分页