如何防止 MapKit 注释在平移时消失?

问题描述 投票:0回答:1

我正在使用 Swift 的 MapKit 和自定义注释在地图上放置图钉。自定义注释是 ZStack,它创建带有半径的引脚。下面的

getNearbyEvents
函数返回
Place
的列表。

Map(coordinateRegion: $viewModel.region,
            showsUserLocation: true,
            annotationItems: getNearbyEvents()
        ) {
            place in
            MapAnnotation(coordinate:place.coordinate) {
                ZStack {
                    Circle()
                        .stroke(Color.black, lineWidth: 3)
                        .frame(width:160, height:160)
                        .opacity(0.6)
                    Circle()
                        .fill(Color("AccentColor"))
                        .opacity(0.2)
                        .frame(width:160, height:160)
                    Image("MapPin")
                        .resizable()
                        .frame(width: 50, height: 50, alignment: .center)
                }
            }
        }

在 SwiftUI 画布中使用地图预览时,我可以平移,体验非常流畅。除了一些闪烁之外,注释始终可见并且效果很好。但是,当我在设备上构建应用程序时,地图在平移时将不再显示任何注释。他们都会隐形,直到地图停下来。有什么办法可以防止这种行为吗?我希望注释始终可见。

swift swiftui mapkit
1个回答
0
投票

我遇到了类似的问题——平移或缩放时我的标记消失了。

我认为这是因为我的注释(类似于您的“getNearbyEvents()”)位于计算变量中,并且每次更新视图时都会更新。我通过确保我的注释仅在视图初始化时计算一次来解决这个问题。

这可能适用于您的用例,也可能不适用于您的用例,但希望它有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.