所以我有一個程式可以接受用戶的輸入并將其轉換為緯度和經度坐標。我想使用那個坐標,但我真的不知道如何在程式中的任何地方呼叫它。任何幫助,將不勝感激!代碼如下:)
import SwiftUI
import MapKit
struct ContentView: View {
let geocoder = CLGeocoder()
@State private var address = ""
var body: some View {
VStack {
TextField("Enter Location", text: $address)
Button {
geocoder.geocodeAddressString(address, completionHandler: {(placemarks, error) -> Void in
if((error) != nil){
print("Error", error ?? "")
}
if let placemark = placemarks?.first {
let coordinates:CLLocationCoordinate2D = placemark.location!.coordinate
print("Lat: \(coordinates.latitude) -- Long: \(coordinates.longitude)")
}
})
} label: {
Text("Press For Location")
}
}
}
}
uj5u.com熱心網友回復:
已編輯:您可以將經緯度值轉換為實際位置。
import MapKit
import SwiftUI
struct ContentView: View {
let geocoder = CLGeocoder()
@State private var result = "result of lat & long"
@State private var address = ""
@State private var lat = 0.0
@State private var long = 0.0
@State private var country = "country name"
@State private var state = "state name"
@State private var zip = "zip code"
var body: some View {
VStack {
//Enter "Florida"
TextField("Enter Location", text: $address)
//Press button
Button {
geocoder.geocodeAddressString(address, completionHandler: {(placemarks, error) -> Void in
if((error) != nil){
print("Error", error ?? "")
}
if let placemark = placemarks?.first {
let coordinates:CLLocationCoordinate2D = placemark.location!.coordinate
print("Lat: \(coordinates.latitude) -- Long: \(coordinates.longitude)")
//added code
result = "Lat: \(coordinates.latitude) -- Long: \(coordinates.longitude)"
lat = coordinates.latitude
long = coordinates.longitude
}
})
} label: {
Text("Press For Location")
}
//result will show "Lat: 29.5449611 -- Long: -81.7627933"
Text("\(result)")
Spacer()
//Press this button after you pressed the location button
//it will convert the lat & long to real location
Button {
reverseLatLong(lat: lat, long: long)
} label: {
Text("Reverse to address")
}
Text("\(country)") //United States
Text("\(state)") //FL
Text("\(zip)") //32177
}
}
func reverseLatLong(lat:Double, long:Double){
let geoCoder = CLGeocoder()
let location = CLLocation(latitude: lat, longitude: long)
geoCoder.reverseGeocodeLocation(location, completionHandler: { (sub, e) -> Void in
var l: CLPlacemark!
l = sub?[0]
if let lcountry = l.country {
country = lcountry
}
if let lstate = l.administrativeArea {
state = lstate
}
if let lzip = l.postalCode {
zip = lzip
}
})
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/493463.html
上一篇:如何使文本自動調整大小以適應swiftUI中的框架?
下一篇:如何顯示集合中的所有專案
