@class CLLocation, GEOLocationShifter, NSObject, NSBundle, GEOLocation, NSMutableArray, CLHeading, NSString, geo_isolater, NSHashTable, NSTimer, NSError, NSLock; @protocol MKLocationProvider, OS_dispatch_group, MNLocationRecorder; @interface MKLocationManager : NSObject <GEOResourceManifestTileGroupObserver, MKLocationProviderDelegate> { id<MKLocationProvider> _locationProvider; NSHashTable *_locationObservers; NSHashTable *_locationListeners; NSHashTable *_headingObservers; CLLocation *_lastLocation; double _lastLocationUpdateTime; BOOL _trackingLocation; BOOL _trackingHeading; double _applicationResumeTime; double _applicationSuspendTime; double _headingUpdateTime; double _locationAccuracyUpdateTime; double _locationUpdateStartTime; BOOL _isReceivingAccurateLocations; NSMutableArray *_waitForAccurateLocationsHandlers; NSTimer *_waitForAccurateLocationsTimer; double _lastLocationReportTime; GEOLocationShifter *_locationShifter; NSTimer *_headingThrottlingTimer; double _lastVehicleHeading; double _lastVehicleSpeed; double _lastVehicleHeadingUpdateTime; double _lastVehicleSpeedUpdateTime; int _consecutiveOutOfCourseCount; BOOL _continuedAfterBecomingInactive; BOOL _suspended; NSMutableArray *_recentLocationUpdateIntervals; NSLock *_lastLocationLock; NSLock *_observersLock; int _accuracyAuthorizationState; BOOL _temporaryPreciseLocationAuthorizationPromptShown; geo_isolater *_accuracyAuthorizationIsolater; struct GEOOnce_s { struct os_unfair_lock_s { unsigned int _os_unfair_lock_opaque; } lock; BOOL didRun; } _initializedAuthorizationStatus; NSObject<OS_dispatch_group> *_authStatusInitializationGroup; BOOL _hasCustomDesiredAccuracy; } @property (retain, nonatomic) id<MKLocationProvider> locationProvider; @property (copy, nonatomic) id /* block */ locationCorrector; @property (nonatomic) BOOL logStartStopLocationUpdates; @property (nonatomic, getter=isEnabled) BOOL enabled; @property (readonly, nonatomic, getter=isLocationServicesAuthorizationNeeded) BOOL locationServicesAuthorizationNeeded; @property (readonly, nonatomic) BOOL isLocationServicesAvailable; @property (readonly, nonatomic) BOOL isLocationServicesPossiblyAvailable; @property (readonly, nonatomic) BOOL isLocationServicesEnabled; @property (readonly, nonatomic) BOOL isLocationServicesApproved; @property (readonly, nonatomic) BOOL isLocationServicesDenied; @property (readonly, nonatomic) BOOL isLocationServicesRestricted; @property (readonly, nonatomic) BOOL isHeadingServicesAvailable; @property (readonly, nonatomic) BOOL isAuthorizedForPreciseLocation; @property (readonly, nonatomic) BOOL isTemporaryPreciseLocationAuthorizationPromptShown; @property (nonatomic, getter=isLocationServicesPreferencesDialogEnabled) BOOL locationServicesPreferencesDialogEnabled; @property (readonly, nonatomic) double headingUpdateTimeInterval; @property (readonly, nonatomic) GEOLocation *currentLocation; @property (readonly, nonatomic) GEOLocation *gridSnappedCurrentLocation; @property (readonly, nonatomic) GEOLocation *courseCorrectedLocation; @property (nonatomic) long long headingOrientation; @property (copy, nonatomic) id /* block */ authorizationRequestBlock; @property (readonly, nonatomic) BOOL hasLocation; @property (readonly, nonatomic) CLLocation *lastLocation; @property (readonly, nonatomic) CLLocation *lastGoodLocation; @property (readonly, nonatomic) BOOL isLastLocationStale; @property (readonly, nonatomic) NSError *locationError; @property (nonatomic) double desiredAccuracy; @property (nonatomic) double distanceFilter; @property (nonatomic) BOOL matchInfoEnabled; @property (nonatomic) BOOL fusionInfoEnabled; @property (readonly, nonatomic) CLLocation *lastProviderLocation; @property (nonatomic) long long activityType; @property (readonly, nonatomic) double expectedGpsUpdateInterval; @property (readonly, nonatomic) double timeScale; @property (retain, nonatomic) NSBundle *effectiveBundle; @property (copy, nonatomic) NSString *effectiveBundleIdentifier; @property (nonatomic) BOOL useCourseForHeading; @property (readonly, nonatomic) CLHeading *heading; @property (retain, nonatomic) CLHeading *throttledHeading; @property (readonly, nonatomic) double currentVehicleHeading; @property (readonly, nonatomic) double currentVehicleSpeed; @property (readonly, nonatomic) double vehicleHeadingOrCourse; @property (copy, nonatomic) id /* block */ networkActivity; @property (retain, nonatomic) id<MNLocationRecorder> locationRecorder; @property (readonly, nonatomic) double navigationCourse; @property (nonatomic) double minimumLocationUpdateInterval; @property (nonatomic) BOOL continuesWhileInactive; @property (readonly, nonatomic, getter=wasLastLocationPushed) BOOL lastLocationPushed; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; + (id)timeoutError; + (id)sharedLocationManager; + (void)setCanMonitorWiFiStatus:(BOOL)a0; - (void)_reportLocationSuccess; - (void)locationProvider:(id)a0 didReceiveError:(id)a1; - (void)applicationDidBecomeActive:(id)a0; - (void)requestWhenInUseAuthorizationWithPrompt; - (void)stopLocationUpdateWithObserver:(id)a0; - (id)initWithCLLocationManager:(id)a0; - (void)locationProvider:(id)a0 didUpdateLocation:(id)a1; - (void)_setTrackingHeading:(BOOL)a0; - (void)stopVehicleHeadingUpdate; - (void)requestTemporaryPreciseLocationAuthorizationWithPurposeKey:(id)a0 completion:(id /* block */)a1; - (void)_reportLocationStatus:(SEL)a0; - (void)_reportLocationFailureWithError:(id)a0; - (void)locationProvider:(id)a0 didUpdateHeading:(id)a1; - (void)pushLocation:(id)a0; - (void)locationProvider:(id)a0 didUpdateVehicleHeading:(double)a1 timestamp:(id)a2; - (void)dismissHeadingCalibrationDisplay; - (void)resourceManifestManager:(id)a0 didChangeActiveTileGroup:(id)a1 fromOldTileGroup:(id)a2; - (void)applicationWillResignActive:(id)a0; - (void)_reportLocationReset; - (void)setLastLocation:(id)a0; - (void)startHeadingUpdateWithObserver:(id)a0; - (void)startLocationUpdateWithObserver:(id)a0; - (BOOL)locationProviderShouldPauseLocationUpdates:(id)a0; - (void)locationProviderDidResumeLocationUpdates:(id)a0; - (void)stopHeadingUpdateWithObserver:(id)a0; - (void)_setTrackingLocation:(BOOL)a0; - (void)requestWhenInUseAuthorization; - (void)locationProviderDidChangeAuthorizationStatus:(id)a0; - (id)singleLocationUpdateWithDesiredAccuracy:(double)a0 handler:(id /* block */)a1 timeout:(double)a2 maxLocationAge:(double)a3; - (id)init; - (void)locationProviderDidPauseLocationUpdates:(id)a0; - (void)locationProvider:(id)a0 didUpdateVehicleSpeed:(double)a1 timestamp:(id)a2; - (void)reset; - (void)dealloc; - (void)_suspend; - (void)_reportHeadingFailureWithError:(id)a0; - (id)singleLocationUpdateWithHandler:(id /* block */)a0; - (void)waitForAccurateLocationWithTimeout:(double)a0 handler:(id /* block */)a1; - (void)startVehicleSpeedUpdate; - (void)_locationProvider:(id)a0 didUpdateLocation:(id)a1 lastKnownNavCourse:(double)a2; - (void)_startLocationUpdateWithObserver:(id)a0 desiredAccuracy:(double)a1; - (BOOL)_isTimeToResetOnResume; - (void)_syncLocationProviderWithTracking; - (void)_setIsReceivingAccurateLocations:(BOOL)a0; - (void)_useDefaultCoreLocationProvider; - (void)resetAfterResumeIfNecessary; - (void)dampenGPSLocationAccuracy:(id *)a0; - (void).cxx_destruct; - (void)stopVehicleSpeedUpdate; - (BOOL)_shouldAllowLocationUpdateInterval:(double)a0; - (void)_reportHeadingSuccess; - (id)singleLocationUpdateWithDesiredAccuracy:(double)a0 handler:(id /* block */)a1 timeout:(double)a2; - (void)startVehicleHeadingUpdate; - (void)listenForLocationUpdates:(id)a0; - (void)setHeading:(id)a0; - (BOOL)isLocationServicesPossiblyAvailable:(id *)a0; - (void)stopListeningForLocationUpdates:(id)a0; - (void)locationProvider:(id)a0 didUpdateLocation:(id)a1 lastKnownNavCourse:(double)a2; - (void)_initializeAuthStatusIfNecessary; - (void)_waitForAccurateLocationsTimerFired:(id)a0; - (id)observersDescription; - (id)singleLocationUpdateWithDesiredAccuracy:(double)a0 handler:(id /* block */)a1; @end