Chapter 15. Maps and Location
In this chapter, we will have a look at some awesome updates to the MapKit and Core Location frameworks.
15.1 Customizing the Map View with System Buttons
Problem
Instead of letting your map view display the compass or user tracking buttons (as it does by default), you want to place these buttons somewhere else in your application’s UI.
Solution
Follow these steps:
- For the user tracking button, create an instance of
MKUserTrackingButton
that inherits fromUIView
. You can then add this view to another view in your view hierarchy. Alternatively you can create an instance ofUIBarButtonItem
using itsUIBarButtonItem(customView:)
method, which lets you place the bar button on a navigation item. In the Discussion, we’ll show an example that uses aUIBarButtonItem
. - For the compass button, create an instance of the
MKCompassButton
class that also inherits from theUIView
class. To display it, you have the same options as for the user tracking button. - Set the
mapType
property of your map view tomutedStandard
, of typeMKMapType
, so that the map view itself does not show the standard buttons and views. - Set the value of the
showsCompass
property of your map view tofalse
, so that the map view does not show its own compass button.
The resulting map view and navigation bar are shown in Figure 15-1.
Get iOS 11 Swift Programming Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.