             return
         }
         
-        // Determine visual offset of the center coordinate
-        let mapFrame = self.mapView.frame
-        let uncoveredFrame = self.uncoveredMapFrame()
-        let offset = mapFrame.midY - uncoveredFrame.midY
-        
         // Update camera (if altitude is higher than expected)
         let existingCamera = mapView.camera
         let altitude = min(existingCamera.altitude, self.mapMaxAltitude)
-        let coordinate = userLocation.coordinate
-        
-        // Correct the coordinate for visual offset (caused by the drawer)
-        var point = self.mapView.convert(coordinate, toPointTo: self.view)
-        point.y += offset
-        let offsetCoordinate = self.mapView.convert(point, toCoordinateFrom: self.view)
+        let coordinate = self.visualCenterCoordinate(forCoordinate: userLocation.coordinate)
         
         // Change the camera
-        let camera = MKMapCamera(lookingAtCenter: offsetCoordinate, fromDistance: altitude, pitch: existingCamera.pitch, heading: existingCamera.heading)
+        let camera = MKMapCamera(lookingAtCenter: coordinate, fromDistance: altitude, pitch: existingCamera.pitch, heading: existingCamera.heading)
         UIView.animate(withDuration: 0.2, delay: 0.0, options: [.allowUserInteraction, .curveEaseInOut], animations: {
             self.mapView.camera = camera
         }) { success in

        return CGRect(origin: mapViewRect.origin, size: CGSize(width: mapViewRect.width, height: drawerRect.minY - mapViewRect.minY))
    }
    
    // MARK: UIGestureRecognizerDelegate
    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {

    }
    
    @IBAction func locateUser(_ sender: UIButton) {
        guard let currentUserLocation = self.currentUserLocation else {
            return
        }
        
        let camera = self.mapView.camera
        let center = self.visualCenterCoordinate(forCoordinate: currentUserLocation.coordinate)
        let newCamera = MKMapCamera(lookingAtCenter: center, fromDistance: camera.altitude, pitch: camera.pitch, heading: 0)
        self.mapView.setCamera(newCamera, animated: true)
        
        self.trackUserLocation = true
        sender.isHidden = true
    }
