Задача:
Определить город пользователя.
Сделано:
- Получение по GPS города
- Поставить отметку на карте
Как выглядит сейчас:
Нажимаем на выбор города и получаем координаты, которые преобразуем в адрес и забираем оттуда город.
Как город увидели, то появляется алект - верно ли определили город:
а) Верно
б) Выбрать на карте
Если выбрать б, то у меня снова срабатывает определение города по ГПС (текущие координаты).
Не могу предположить, как в случае выбора “выбрать на карте” - больше не получать координаты автоматом.
// получаем текущие координаты по GPS
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations[0] //.last
let myLocation = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
let span = MKCoordinateSpanMake(0.01, 0.01)
let region = MKCoordinateRegionMake(myLocation, span)
mapView.setRegion(region, animated: true)
self.mapView.showsUserLocation = true
coordinateToAdress(locations.last!)
}
// получаем координаты по нажатию
func foundTap(_ recognizer: UITapGestureRecognizer) {
let point: CGPoint = recognizer.location(in: mapView)
let tapPoint: CLLocationCoordinate2D = mapView.convert(point, toCoordinateFrom: view)
let point1 = MKPointAnnotation()
point1.coordinate = tapPoint
mapView.addAnnotation(point1)
let getLat: CLLocationDegrees = tapPoint.latitude
let getLon: CLLocationDegrees = tapPoint.longitude
let locationTouch: CLLocation = CLLocation(latitude: getLat, longitude: getLon)
coordinateToAdress(locationTouch)
}
// Преобразуем координаты в Адрес
func coordinateToAdress(_ locations: CLLocation) {
geocode.reverseGeocodeLocation(locations /*.last!*/) { (placemarks, error) in
// Детализированная информация по точке
var placemark: CLPlacemark!
if let placemarks = placemarks {
placemark = placemarks[0]
}
// Словарь адресов
// print(placemark.addressDictionary!)
// Вытаскиваем атрибуты адреса
if let country = placemark.addressDictionary!["Country"] as? NSString {
print("Country name \(country)")
}
self.city = (placemark.addressDictionary!["City"] as? NSString)!
print("City name \(self.city)")
// Street address
if let street = placemark.addressDictionary!["Thoroughfare"] as? NSString {
print(street)
}
self.delay(15, closure: {
self.showAlertLocation()
})
}
}