         self.locationManager.delegate = self
 
         let status = CLLocationManager.authorizationStatus()
-        if status == .NotDetermined {
+        switch status {
+        case .NotDetermined:
             self.locationManager.requestAlwaysAuthorization()
-        } else if status != .Denied {
+
+        case .AuthorizedAlways, .AuthorizedWhenInUse:
             self.mapView.showsUserLocation = true
-        } else {
-            self.handleLocationAuthorizationDenial()
+
+        case .Denied, .Restricted:
+            self.handleLocationAuthorizationDenial(status)
         }
     }
 

     If user denies current location, just present an alert to notify
     them, and show the map in its default state and require manual zoom.
     */
    private func handleLocationAuthorizationDenial() {
        let alertController = UIAlertController(
            title: "Understood",
            message: "You've denied sharing your current location. You can always find your location manually.",
            preferredStyle: .Alert
        )
        alertController.addAction(UIAlertAction(title: "OK", style: .Default) { (action) in
            alertController.dismissViewControllerAnimated(true, completion: nil)
        })
        self.presentViewController(alertController, animated: true, completion: nil)
        self.revealMapView()
        // TODO: Test usability of search results in this state.

extension MapViewController: CLLocationManagerDelegate {

    public func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
        switch status {
        case .NotDetermined: return

        case .AuthorizedAlways, .AuthorizedWhenInUse:
            self.mapView.showsUserLocation = true
            self.mapView.setUserTrackingMode(.None, animated: false)

        case .Denied, .Restricted:
            self.handleLocationAuthorizationDenial(status)
        }
    }

