import UIKit
import CoreLocation
import MapKit
class ViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {
@IBOutlet weak var mapView: MKMapView!
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let userLocation = locations.last else { return }
let coordinateRegion = MKCoordinateRegion(center: userLocation.coordinate,
latitudinalMeters: 1000, longitudinalMeters: 1000)
mapView.setRegion(coordinateRegion, animated: true)
// Call function to fetch nearby restaurants using userLocation.coordinate
fetchNearbyRestaurants(at: userLocation.coordinate)
}
func fetchNearbyRestaurants(at coordinate: CLLocationCoordinate2D) {
let request = MKLocalSearch.Request()
request.naturalLanguageQuery = "restaurant"
request.region = MKCoordinateRegion(center: coordinate, latitudinalMeters: 1000, longitudinalMeters: 1000)
let search = MKLocalSearch(request: request)
search.start { (response, error) in
guard let response = response else {
print("Error: \(error?.localizedDescription ?? "Unknown error")")
return
}
for item in response.mapItems {
print("Name: \(item.name ?? "N/A"), Address: \(item.placemark.title ?? "N/A")")
// You can add markers for each restaurant on the mapView using item.placemark.coordinate
let annotation = MKPointAnnotation()
annotation.coordinate = item.placemark.coordinate
annotation.title = item.name
annotation.subtitle = item.placemark.title
self.mapView.addAnnotation(annotation)
}
}
}
}