【发布时间】:2021-04-29 19:14:34
【问题描述】:
我想在应用程序上放大我的地图,我尝试使用latitudinalMeters: 300、longitudinalMeters: 300 或使用latitudeDelta: 0.001 旋转。他们两个都没有工作。
我也选择了(0, 0)作为我的中心,但是每次我在模拟器上运行时,我都以(37.326010,-122.026056)作为我的中心。显然,我在位置管理器中设置的中心和区域的默认设置在 ContentView 中都不起作用。
这是我的 LocationManager.swift 代码:
import Foundation
import CoreLocation
import MapKit
class LocationManager: NSObject, ObservableObject{
let locationManager = CLLocationManager()
@Published var location: CLLocation?
@Published var region: MKCoordinateRegion
override init(){
self.region = MKCoordinateRegion(center: CLLocationCoordinate2D.init(latitude: 0,longitude: 0),latitudinalMeters: 300, longitudinalMeters: 300)
super.init()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
}
}
extension LocationManager : CLLocationManagerDelegate {
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation]){
guard let location = locations.last else { return }
self.region = MKCoordinateRegion(center: location.coordinate, latitudinalMeters: 300, longitudinalMeters: 300)
self.location = location
}
}
这是我的 ContentView:
struct ContentView: View {
var body: some View {
MapView2()
}
}
struct MapView2: View {
@ObservedObject var locationManager = LocationManager()
var body: some View {
let coord = locationManager.location?.coordinate
let lat = coord?.latitude ?? 0
let lon = coord?.longitude ?? 0
return VStack {
Map(coordinateRegion: $locationManager.region,
interactionModes: .all,
showsUserLocation: true, userTrackingMode: .constant(.follow))
}
}
}
【问题讨论】: