Не могу получить информацию о точке на карте
Я хочу, чтобы по нажатии на карту, если там есть заведение, высвечивалось название заведения, если же его нет, то высвечивалась бы просто улица.
Проблема в том, что так выводится только улица почему-то:
@objc private func handleMapTap(_ gesture: UITapGestureRecognizer) {
let touchPoint = gesture.location(in: mapView)
let coordinate = mapView.convert(touchPoint, toCoordinateFrom: mapView)
mapView.removeAnnotations(mapView.annotations)
let annotation = MKPointAnnotation()
annotation.coordinate = coordinate
mapView.addAnnotation(annotation)
let region = MKCoordinateRegion(center: coordinate, latitudinalMeters: 300, longitudinalMeters: 300)
mapView.setRegion(region, animated: true)
selectedLocation = coordinate
reverseGeocode(location: coordinate)
}
private func reverseGeocode(location: CLLocationCoordinate2D) {
let geocoder = CLGeocoder()
let locationPoint = CLLocation(latitude: location.latitude, longitude: location.longitude)
geocoder.reverseGeocodeLocation(locationPoint) { [weak self] placemarks, error in
guard let self = self else { return }
if let error = error {
print("Error getting placemark: \(error.localizedDescription)")
return
}
guard let placemark = placemarks?.first else { return }
self.placeNameLabel.text = placemark.name ?? "Unknown Place"
self.streetNameLabel.text = "\(placemark.thoroughfare ?? ""), \(placemark.locality ?? ""), \(placemark.postalCode ?? "")"
}
}
Я пробовала сделать и так:
private func fetchNearbyPOIs(coordinate: CLLocationCoordinate2D) {
let request = MKLocalSearch.Request()
request.pointOfInterestFilter = MKPointOfInterestFilter.includingAll
request.region = MKCoordinateRegion(center: coordinate, latitudinalMeters: 500, longitudinalMeters: 500)
let search = MKLocalSearch(request: request)
search.start { [weak self] response, error in
guard let self = self else { return }
if let error = error {
print("Ошибка при поиске POI: \(error.localizedDescription)")
return
}
if let mapItem = response?.mapItems.first {
self.placeNameLabel.text = mapItem.name ?? "Unknown Place"
self.streetNameLabel.text = mapItem.placemark.thoroughfare ?? "Unknown Street"
} else {
self.reverseGeocode(location: coordinate)
}
}
}
Но это мало что решает. Что я делаю не так?