Не могу получить информацию о точке на карте

Я хочу, чтобы по нажатии на карту, если там есть заведение, высвечивалось название заведения, если же его нет, то высвечивалась бы просто улица.

Проблема в том, что так выводится только улица почему-то:

@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)
        }
    }
}

Но это мало что решает. Что я делаю не так?


Ответы (0 шт):