Я пытаюсь постоянно вычислять расстояние (from: the_userLocation), на котором фиксированные широта / долгота вводятся в ContentView. Я могу сделать это один раз, забавно c внутри struct MapView: UIViewRepresentable {
, но я хотел делать непрерывные вычисления. Я думал, что смогу сделать это внутри func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation)
внутри class MapViewCoordinator: NSObject, MKMapViewDelegate
У меня есть объект EnvironmentObject, определенный в одном файле
import SwiftUI
final class AppData: ObservableObject { // Don't know why final
@Published var cornerLatitude: String = ""
@Published var cornerLongitude: String = ""
@Published var corner: Int = 1
}
В верхней части файла MapView я включен EnvironmentObject
import MapKit
struct MapView: UIViewRepresentable {
@EnvironmentObject var appData: AppData
var map = MKMapView()
var locationManager: CLLocationManager!
init() {
locationManager = CLLocationManager()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
}
В классе MapViewCoordinator fun c mapView, если я раскомментирую строки let cornerLat =
и let cornerLon =
, я получаю ошибки
Instance member 'appData' of type 'MapView' cannot be used on instance of nested type 'MapView.MapViewCoordinator'
Я пробовал другие «комбинации» кода с аналогичными результатами.
let map: MKMapView
init(map:MKMapView) {
self.map = map
}
func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
let location = map.userLocation
let region = MKCoordinateRegion(center: location.coordinate, latitudinalMeters: 500, longitudinalMeters: 500)
map.setRegion(region, animated: true)
// let cornerLat = Double(appData.cornerLatitude) ?? 0.0
// let cornerLon = Double(appData.cornerLongitude) ?? 0.0
}
}
Любые мысли / предложения. Спасибо