我正在使用 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 画布中使用地图预览时,我可以平移,体验非常流畅。除了一些闪烁之外,注释始终可见并且效果很好。但是,当我在设备上构建应用程序时,地图在平移时将不再显示任何注释。他们都会隐形,直到地图停下来。有什么办法可以防止这种行为吗?我希望注释始终可见。
我遇到了类似的问题——平移或缩放时我的标记消失了。
我认为这是因为我的注释(类似于您的“getNearbyEvents()”)位于计算变量中,并且每次更新视图时都会更新。我通过确保我的注释仅在视图初始化时计算一次来解决这个问题。
这可能适用于您的用例,也可能不适用于您的用例,但希望它有所帮助。