How to Display Location and Routes with CoreLocation & MapKit using Swift
How to display Location and Routes with CoreLocation & MapKit using Swift
Apple’s CoreLocation and MapKit frameworks allow developers to easily create great applications that incorporate location services, such as GPS, maps, route finding, and more. This tutorial will show you how to use CoreLocation and MapKit in order to display a user’s location and route on a map.
Step 1: Setting up the Project
In Xcode, create a new single view project and give it an appropriate name. Go to your project’s target and select the “Capabilities” tab. Find “Background Modes” and switch it on. After that, select “Location updates”. Add two frameworks to your project: CoreLocation and MapKit.
Step 2: Getting User’s Location
Create a class that conforms to CLLocationManagerDelegate. In the class, initialize the locationManager and set its delegate to self. Then, request authorization and start updating locations. Once the user has approved the app’s request for location data, the locationManager will begin tracking the user’s location.
Step 3: Showing the Location on a MapView
Add a MapView to the storyboard. Set its delegate to the class you created in Step 2. Implement the MKMapViewDelegate method didUpdateLocations and set the mapView’s region with the location that was passed into the didUpdateLocations method. Finally, call the mapView’s addAnnotation method and pass in the location that was passed into the didUpdateLocations method.
Step 4: Calculating the Route
Next, get the user’s destination by prompting them for an address. Then, create a MKDirectionsRequest object with the start and end points. Pass the request to a MKDirections object and call its calculate method. Finally, in the completion handler, call the mapView’s addOverlay method and pass in the MKRoute object. The route will be displayed on the mapView.
Conclusion
Using CoreLocation and MapKit, it is possible to easily display a user’s current location and route on a map. By following the steps in this tutorial, you will be able to create your own location-based application with great ease and flexibility.