Apple рдХреЗ рдореВрд▓ рд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЫрд╡рд┐ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореИрдВ рдПрдХ рдРрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдиреИрдкрдЪреИрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕реА рддрд░рд╣ рдХреЗ рдлреАрдЪрд░реНрд╕ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдереЗ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдпрд╣ рдПрдХ рд╡рд┐рд╖рдпрдЧрдд рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯрд╛рдЧреНрд░рд╛рдо рдЬреИрд╕рд╛ рдПрдкреНрд▓реАрдХреЗрд╢рди рдерд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдордВрдЪ - рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рдереАред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди - рддрд╕реНрд╡реАрд░реЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛, рдЧреНрд░рд╛рд╣рдХ рдЕрдЪрд╛рдирдХ рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд╣рд╛рдВ рдлреЛрдЯреЛ рд▓реА рдЧрдИ рдереАред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрдИ рд▓реЛрдЧ Google рдФрд░ рдлреЗрд╕рдмреБрдХ рд╕реЗ рддреБрд░рдВрдд рд╕реНрдерд╛рдиреЛрдВ рдПрдкреАрдЖрдИ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рдереЗ рдХрд┐ рдЗрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рдереАрдВред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдмрд╛рдж, Apple рдХрд╛ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рдкрд╛рдпрд╛ рдЧрдпрд╛ - CLPlacemark , рдЬреЛ рдореБрдлрд╝реНрдд рдерд╛, рдФрд░ рдЙрд╕ рд╕рдордп рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рджреИрдирд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛рдУрдВ рдХрд╛ рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдерд╛ред рдЪреВрдВрдХрд┐ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдореВрд▓ рд░реВрдк рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд┐рдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдк рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

Apple рдХреЗ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ CLPlacemark рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ CLGeocoder рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рднреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдерд╛рди рдирд╛рдо рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ CLPlacemark рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдпрд╣ рд╕рдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рд░рд╕рджрд╛рд░ред

рд╕реНрд░реЛрдд рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

import CoreLocation let geocoder = CLGeocoder() func findPlace(name: String) { geocoder.geocodeAddressString(name) { placemarks, error in print(placemarks) } } findPlace(name: тАЬNewтАЭ) 

рдЗрд╕ рд╕рд░рд▓ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдЬрд┐рдпреЛрдХреЛрдбрд░ рд╣рдореЗрд╢рд╛ рдПрдХ CLPlacemark рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрдХрдбрд╝ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдХрднреА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрддреНрд╡ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдкреВрд░реЗ рд╕реНрдХреНрд░реАрди рдкрд░, рдЬрд╣рд╛рдВ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреА рдПрдХ рдмрдбрд╝реА рд╕реВрдЪреА рдХреА рдЙрдореНрдореАрдж рдХреА рдЧрдИ рдереА: рдиреНрдпреВрдпреЙрд░реНрдХ, рдиреНрдпреВ рдЬрд╝рд▓реИрдВрдб, рдиреНрдпреВ рдмреИрд▓реЗрдВрд╕ рд╕реНрдЯреЛрд░, рдЖрджрд┐, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдЬреЛ рд╣рдореЗрд╢рд╛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рдерд╛ред

CLGeocoder рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЕрд╕рдлрд▓ рд╕рдВрдШрд░реНрд╖ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдиреЗ рдореБрдЭрд╕реЗ рдХрд╣рд╛: "рдФрд░ рдЖрдкрдиреЗ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ MapKit рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рдЕрд╡рд╕рд░ рд╣реЛ?" рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛, MapKit рдореЗрдВ MKLocalSearch рд╣реИ , рдЬрд╣рд╛рдВ рд╣рдо MKPlacemark рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ CLPlacemark рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИред рд╕рд░реНрдХрд┐рдЯ рдХрд╛рдлреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рд╢реБрд░реВ рдХреА:

 import MapKit let request = MKLocalSearchRequest() var localSearch: MKLocalSearch? func findPlace(name: String) { request.naturalLanguageQuery = text localSearch = MKLocalSearch(request: request) localSearch?.start { (searchResponse, _) in guard let items = searchResponse?.mapItems else { return } print(items) } } findPlace(name: тАЬNew) 

рдкрд░рд┐рдгрд╛рдо

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ 10 CLPlacemark рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдорд┐рд▓реАред рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдЕрдзрд┐рдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдереАред рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рджреВрд░ рд╕реЗ, рдЬрдм рдЖрдк рдкрд╛рд╕ рдореЗрдВ рд╕реНрдерд┐рдд рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдерд╛рди рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЛрдорд┐рдиреЛрдЬрд╝ рдкрд┐рдЬреНрдЬрд╛ рдореЗрд░реЗ рдмрдЧрд▓ рдореЗрдВ рд╣реИред рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЬрдм рдореИрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдРрд╕реА рдХреНрд╡реЗрд░реА рджрд░реНрдЬ рдХрд░реВрдВ, рддреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рдкрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рд╖реНрдард╛рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдХрд┐ рд╕рд░рдгреА рдХрд╛ рдЧрдарди рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХрдИ рдЪреАрдЬреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ рдЬреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдкрд╕рдВрдж рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ:

  1. рд╡рд╣ IP рдкрддрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ Apple рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рд╡реАрдкреАрдПрди рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдХрд░реАрдм рдереЗред
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рдиред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдВрдЧреЗред
  3. рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕рд┐рд╕реНрдЯрдо рднрд╛рд╖рд╛ред

рд╡реАрдкреАрдПрди рдЙрджрд╛рд╣рд░рдг

рд╡реАрдкреАрдПрди рдЙрджрд╛рд╣рд░рдг
рдиреНрдпреВ рдпреЙрд░реНрдХ

рдЯреЛрд░рдВрдЯреЛ

рдХреАрд╡

рд▓рдВрдбрди

рдлреНрд░реИрдВрдХрдлрд░реНрдЯ


рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдРрд╕реЗ рдЕрдиреНрдп рдХрд╛рд░рдХ рд╣реИрдВ рдЬреЛ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред

рдЖрдЧреЗ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдкрд╛рдареНрдпрдХреНрд░рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдерд╛ред

 import UIKit import MapKit import CoreLocation final class ViewController: UIViewController, CLLocationManagerDelegate { private let locationManager = CLLocationManager() private let request = MKLocalSearch.Request() private var localSearch: MKLocalSearch? private var region = MKCoordinateRegion() override func viewDidLoad() { super.viewDidLoad() if CLLocationManager.locationServicesEnabled() { locationManager.delegate = self locationManager.desiredAccuracy = kCLLocationAccuracyBest locationManager.requestWhenInUseAuthorization() locationManager.startUpdatingLocation() } } func searchPlace(_ place: String) { localSearch?.cancel() request.naturalLanguageQuery = place request.region = region localSearch = MKLocalSearch(request: request) localSearch?.start { [weak self] response, error in let mapItems = response.mapItems //     MKMapItem } } // MARK: - CLLocationManagerDelegate func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { guard let lastLocation = locations.last else { return } let span = MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5) region = MKCoordinateRegion(center: lastLocation.coordinate, span: span) } } 

рдкрд░рд┐рдгрд╛рдо
рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди - рдореИрдбреНрд░рд┐рдб, рдЗрдВрдЯрд░рдиреЗрдЯ рдкреНрд░рджрд╛рддрд╛ рд╡реЛрдбрд╛рдлреЛрди рдИрдПрд╕

рдбреЗрд▓реАрдЧреЗрдЯ рд╡рд┐рдзрд┐ doUpdateLocations рдореЗрдВ, рд╣рдо MKCoordinateSpan рдмрдирд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдореИрдВ Apple рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭ рдЧрдпрд╛ рд╣реВрдВ, рддреЛ рд╣рдо рдЬрд┐рд╕ рдорд╛рди рдХреЛ рдЕрдХреНрд╖рд╛рдВрд╢ / рджреЗрд╢рд╛рдВрддрд░ рдбреЗрд▓реНрдЯрд╛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдХрдо рд╣реИ (рд╕рдВрдХрд░рд╛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ) рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ MapKit рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЬрд╝реВрдо рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддреНрдпрд░реНрдкрдг рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдмрджрд▓ рдЧрдИ рдФрд░ рдореБрдЭреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЬреЛ рдореЗрд░реЗ рдмрдЧрд▓ рдореЗрдВ рд╣реИрдВред

рдпрд╣ рдХреЗрд╡рд▓ рд╕реВрдЪреА рдореЗрдВ рдирд╛рдо рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЪреВрдВрдХрд┐ рдХрднреА-рдХрднреА, CLPlacemark рдХреЗ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╣реА рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдВрдд рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛: рдиреНрдпреВрдпреЙрд░реНрдХ, рдиреНрдпреВрдпреЙрд░реНрдХ, рдПрдирд╡рд╛рдИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рд╕реБрдВрджрд░ рдирд╛рдо рдмрдирд╛рдПрдЧреАред

 import Foundation import MapKit struct Placemark { let location: String init(item: MKMapItem) { var locationString: String = "" if let name = item.name { locationString += "\(name)" } if let locality = item.placemark.locality, locality != item.name { locationString += ", \(locality)" } if let administrativeArea = item.placemark.administrativeArea, administrativeArea != item.placemark.locality { locationString += ", \(administrativeArea)" } if let country = item.placemark.country, country != item.name { locationString += ", \(country)" } location = locationString } } 

рдлрд┐рд░, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреЛрдЬ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ CLPlacemark рдХреЛ рдореИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реВрдЪреА рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 localSearch?.start { [weak self] searchResponse, error in guard let items = searchResponse?.mapItems else { return } //  CLPlacemark    let placemarks = items.map { Placemark(item: $0) } } 

рдЕрдм рдкрд░рд┐рдгрд╛рдо рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рджрд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдирдХреЗ рджреЗрдЦреЗ рдЧрдП рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рддрднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдИрдУрдПрд╕ / рдореИрдХ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рддреЗрдЬ рд╣реЛред рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдореИрдВ Google рдпрд╛ рдлреЗрд╕рдмреБрдХ рд╕реЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рдХреНрд╖реЗрддреНрд░ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдВрддрд┐рдо рдХреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi462465/


All Articles