微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI地图相机运动

如何解决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 举报,一经查实,本站将立刻删除。