Поэтому я пытаюсь создать приложение iOS, использующее swiftui, которое перенаправляет геокодирование адреса, а затем помещает эти координаты в переменные, которые можно использовать в остальных моих представлениях. Функция, которую я использую для прямого геокодирования, выглядит следующим образом:
import SwiftUI
import CoreLocation
struct ContentView: View {
@State var myText = "Some Text just for reference"
@State var location: CLLocationCoordinate2D?
@State var lat: Double?
@State var long: Double?
var body: some View {
VStack{
Text(myText)
.onAppear {
self.getLocation(from: "22 Sunset Ave, East Quogue, NY") { coordinates in
print(coordinates ?? 0) // Print here
self.location = coordinates // Assign to a local variable for further processing
self.long = coordinates?.longitude
self.lat = coordinates?.latitude
}
}
Text("\(long)")
Text("\(lat)")
}
}
func getLocation(from address: String, completion: @escaping (_ location: CLLocationCoordinate2D?)-> Void) {
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(address) { (placemarks, error) in
guard let placemarks = placemarks,
let location = placemarks.first?.location?.coordinate else {
completion(nil)
return
}
completion(location)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Мои вопросы: как я должен вызывать эту функцию внутри моего файла содержимого, чтобы я мог сохранить координаты как переменные и как мне это сделать? вызовите функцию, чтобы распечатать их на экране, чтобы убедиться, что код работает правильно.