//MARK: - Location
var locationManager = CLLocationManager()
var currentLatitude = ""
var currentLongitude = ""
var cityName = ""
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
getLocation()
}
extension LocationViewController: CLLocationManagerDelegate {
func navigateToMaps() {
let address = bookingModel.addressModel
let lat = address["locationLat"] as? String ?? ""
let longitude = address["locationLng"] as? String ?? ""
//let title = address["location"] as? String ?? ""
let destinationLatitude = Double(longitude) ?? 0.0 // Replace with the destination latitude
let destinationLongitude: Double = Double(lat) ?? 0.0 // Replace with the destination longitude
if UIApplication.shared.canOpenURL(URL(string: "http://maps.apple.com/")!) {
// Open Apple Maps with the specified source and destination coordinates
let mapsURL = URL(string: "http://maps.apple.com/?saddr=\(Double(currentLatitude) ?? 0.0),\(Double(currentLongitude) ?? 0.0)&daddr=\(destinationLatitude),\(destinationLongitude)")!
UIApplication.shared.open(mapsURL, options: [:], completionHandler: nil)
} else {
// Handle the case where Apple Maps app is not available
print("Apple Maps is not available")
}
}
func getLocation () {
if #available(iOS 14.0, *) {
switch locationManager.authorizationStatus {
case .notDetermined:
locationManager.requestWhenInUseAuthorization()
locationManager.requestLocation()
break
case .authorizedWhenInUse :
locationManager.requestWhenInUseAuthorization()
locationManager.requestLocation()
break
default:
print("status : ", locationManager.authorizationStatus)
break
}
} else {
print("Error894")
// Fallback on earlier versions
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print("Got Location Data")
if let location = locations.last {
let lat = String(location.coordinate.latitude)
let lng = String(location.coordinate.longitude)
print("Lat : ", lat)
print("lng : ", lng)
getAddressFromLatLon(pdblLatitude: String(location.coordinate.latitude), withLongitude: String(location.coordinate.longitude))
} else {
print("error 120")
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("Error121 : ", error)
}
func getAddressFromLatLon(pdblLatitude: String, withLongitude pdblLongitude: String) {
// SVProgressHUD.show()
var center : CLLocationCoordinate2D = CLLocationCoordinate2D()
let lat: Double = Double("\(pdblLatitude)")!
//21.228124
let lon: Double = Double("\(pdblLongitude)")!
//72.833770
let ceo: CLGeocoder = CLGeocoder()
center.latitude = lat
center.longitude = lon
let loc: CLLocation = CLLocation(latitude:center.latitude, longitude: center.longitude)
ceo.reverseGeocodeLocation(loc, completionHandler:
{(placemarks, error) in
if (error != nil)
{
print("reverse geodcode fail: \(error!.localizedDescription)")
SVProgressHUD.dismiss()
return
}
let pm = placemarks! as [CLPlacemark]
for p in pm {
print(" p :: ", p)
}
if pm.count > 0 {
let pm = placemarks![0]
let cityName = pm.locality ?? ""
let timeZone : String = pm.timeZone?.identifier ?? ""
print("timeZone : ", timeZone)
print("country : ",pm.country ?? "")
print("city : ", cityName)
print("locLat : ", pdblLatitude)
print("locLng : ", pdblLongitude)
self.currentLatitude = pdblLatitude
self.currentLongitude = pdblLongitude
self.cityName = cityName
self.getBookingCoordinates()
}
SVProgressHUD.dismiss()
})
}
}
Comments