如何解决SwiftUI地图相机运动
我正在尝试使地图相机在全球范围内连续进行动画处理。目前,我正在尝试在地图加载时更改onAppear中的coordinateRegions纬度。我正在使用计时器每秒更新一次纬度。到目前为止,我收到错误消息“在视图更新过程中修改状态,这将导致未定义的行为;但是,已更新的纬度正在控制台中打印,但是地图的ordinateRegion尚未更新。”我想知道是否有更好的方法通过swiftUI对全球地图进行连续动画处理。
感谢任何帮助, 谢谢
import SwiftUI
import MapKit
struct MapView: View {
var timer = Timer()
@State var startlocation = CLLocationCoordinate2DMake(41.851,-87.6238)
@State var endLatitude = 41.91 //north Avenue Beach
@State private var region = MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: 41.851,longitude: -87.6238),span: MKCoordinateSpan(latitudeDelta: 40,longitudeDelta: 40)
)
func moveRegion() {
var currentLatitude = region.center.latitude
let increment = 0.00005
Timer.scheduledTimer(withTimeInterval: (1.0/30.0),repeats: true) { (timer) in
currentLatitude += increment
if currentLatitude >= self.endLatitude {
timer.invalidate()
}
region.center.latitude = currentLatitude
print(currentLatitude)
}
}
var body: some View {
Map(coordinateRegion: $region,annotationItems: sites) { location in
MapAnnotation(
coordinate: location.coordinate,anchorPoint: CGPoint(x: 0.5,y: 0.5)
) {
vstack {
Circle()
.overlay(
Circle()
.stroke(location.color.opacity(0.8),linewidth: 3))
.foregroundColor(location.color.opacity(0.5))
.frame(width: location.radius,height: location.radius)
}
}
}.onAppear {
moveRegion()
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。