如何在用户位置初始化 SwiftUI 地图相机?

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

我正在尝试使用从 Core Location 获得的用户位置在 SwiftUI 中初始化我的 MapKit 地图,目前我使用 MapCameraPosition 类型变量初始化我的地图,如何使用 CoreLocation 启动地图。

这几乎是我当前的地图初始化

    @State private var position: MapCameraPosition = .region(
        MKCoordinateRegion(
            center: .monterrey,
            span: MKCoordinateSpan(latitudeDelta: 0.001, longitudeDelta: 0.001)
        )
    )
    @State private var locationManager = LocationManager()
    private var mapLayer: some View {
            Map(position: $position) {
                ForEach(vm.filteredMarkers) { marker in
                    Annotation(marker.name, coordinate: marker.coordinate) {
                        RecyclingMarker {
                            selectMarker(marker)
                        }
                    }
                }
                if let userLocation = locationManager.currentLocation {
                    Annotation("Your Location", coordinate: userLocation) {
                        Image(systemName: "location.fill")
                            .foregroundColor(.blue)
                            .font(.title)
                    }
                }
            }
            .mapStyle(.standard)
        }

我正在尝试将坐标从核心位置提取到 MapCameraPosition 中,但我无法做到这一点。

swift swiftui mapkit core-location combine
1个回答
0
投票

您可以尝试在视图或地图中添加

.onAppear{...}
,例如:

.onAppear {
    if let userLocation = locationManager.currentLocation {
        position = .camera(MapCamera(centerCoordinate: userLocation, distance: 400000.0, heading: 0, pitch: 0))
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.