# Mastering Location Services in SwiftUI Maps: A Comprehensive Guide
Written on
Chapter 1: Introduction to Location Services
In our previous segment of this three-part series, we explored how to create a map and add annotations to highlight specific areas of interest. This second installment will focus on obtaining user permission to access their location and displaying it on the map.
If you haven’t had the chance to read the first part, you can find it here:
The approach we'll take to show a user's location on the map is straightforward but comes with a minor limitation: it automatically recenters the map to the user's location whenever they move away from the center. For now, this behavior is acceptable as our primary goal is to acquire location permission and display the user's position on the map.
Section 1.1: Setting Up User Location Display
Adding a user's location to the map is a simple process following the steps we outlined in the first part of this tutorial. Initially, we need to import the necessary framework, request location access from the user, and then adjust the map view accordingly.
To begin, include the import statement that allows us to access user location data:
import CoreLocation
Next, we will ask the user for permission to use their location. This requires modifying the Info.plist file. In the latest versions of Xcode, this file is not readily visible in the project navigator. To access it, click on the project name in the navigator and select the 'Info' tab.
Here, you will need to add a key: Privacy - Location When In Use Usage Description, along with a descriptive value that the user will see during the location access request.
Once that is set up, return to your Swift file where you are configuring the map view and create an instance of CLLocationManager:
private var locationManager = CLLocationManager()
Subsequently, adjust the map view we created earlier to enable two parameters for displaying and tracking user locations. The first parameter, showsUserLocation, should be set to true, and the second, userTrackingMode, should be defined as .constant(.follow).
Next, we will add an onAppear method to prompt users for location service permissions as soon as the map view loads:
Map(coordinateRegion: $region, showsUserLocation: true,
userTrackingMode: .constant(.follow))
.edgesIgnoringSafeArea(.all)
.onAppear {
locationManager.requestWhenInUseAuthorization()}
Now, you can run the application to see the following screens.
When the app is launched, users will encounter three options regarding location permissions. Upon granting access, the map will automatically center around the user's current location. If you are testing on a simulator, your location will default to One Infinite Loop, Cupertino, CA 95014, which was Apple's headquarters from 1993 to 2017.
This concludes the second part of our series. In the upcoming segment, we will explore how to generate directions between two locations.
I hope this article has proven useful in demonstrating how to integrate MapKit with SwiftUI. If you found this information valuable or have any questions, please feel free to clap and share your thoughts in the comments.
Chapter 2: Video Insights on MapKit
In this video, "Region Monitoring in SwiftUI MapKit," we delve into effective strategies for implementing location-based functionalities. This guide will enhance your understanding of managing user locations within your SwiftUI applications.
The second video, "MapKit with SwiftUI - Regions, Markers and Annotations and CameraPosition," provides insights into utilizing MapKit with SwiftUI to effectively manage regions, markers, and camera positioning. This knowledge is crucial for building interactive maps in your applications.