Swift 单击地图注释时的快捷方式操作

Swift 单击地图注释时的快捷方式操作,swift,uikit,swiftui,mapkit,Swift,Uikit,Swiftui,Mapkit,在MapView中单击特定注释时,我希望添加一个包含注释信息的覆盖 我要寻找的是能够更新一个变量,然后调用updateUIView(),这样地图就会显示与单击的注释对应的覆盖 您可以这样做: let places: [Place] = [ .init(name: "One", coordinate: .init(latitude: 56.951924, longitude: 24.125584)), .init(name: "Two", c

在MapView中单击特定注释时,我希望添加一个包含注释信息的覆盖


我要寻找的是能够更新一个变量,然后调用updateUIView(),这样地图就会显示与单击的注释对应的覆盖

您可以这样做:

let places: [Place] = [
    .init(name: "One", coordinate: .init(latitude: 56.951924, longitude: 24.125584)),
    .init(name: "Two", coordinate: .init(latitude:  56.967520, longitude: 24.105760)),
    .init(name: "Five", coordinate: .init(latitude: 56.9539906, longitude: 24.13649290000000))
]

@State var coordinateRegion = MKCoordinateRegion(center: .init(latitude: 54.6872, longitude: 25.2797), latitudinalMeters: 2000000, longitudinalMeters: 2000000)

var body: some View {
    Map(coordinateRegion: $coordinateRegion, annotationItems: places) { (place) in
        MapAnnotation(coordinate: place.coordinate) {
            Button(action: { print(place.name) }, label: {
                Text(place.name)
            })
        }
    }
}

您可以这样做:

let places: [Place] = [
    .init(name: "One", coordinate: .init(latitude: 56.951924, longitude: 24.125584)),
    .init(name: "Two", coordinate: .init(latitude:  56.967520, longitude: 24.105760)),
    .init(name: "Five", coordinate: .init(latitude: 56.9539906, longitude: 24.13649290000000))
]

@State var coordinateRegion = MKCoordinateRegion(center: .init(latitude: 54.6872, longitude: 25.2797), latitudinalMeters: 2000000, longitudinalMeters: 2000000)

var body: some View {
    Map(coordinateRegion: $coordinateRegion, annotationItems: places) { (place) in
        MapAnnotation(coordinate: place.coordinate) {
            Button(action: { print(place.name) }, label: {
                Text(place.name)
            })
        }
    }
}
看这里:看这里: