+ (SCLocationController *)sharedController
{
static
SCLocationController *sharedController = nil ;
static
dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedController = [[ self
alloc]init];
});
return
sharedController;
}
- ( id )init
{
self
= [ super
init];
if
( self ) {
_locationManager = [[CLLocationManager alloc]init];
_locationManager.delegate = self ;
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
_locationManager.distanceFilter = 30; // Meters.
}
return
self ;
}
#pragma mark - Location Manager
#pragma mark - CLLocationManagerDelegate
- ( void )locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
[_locManager stopUpdatingLocation];
CLGeocoder *reverseGeocoder=[[CLGeocoder alloc] init];
[reverseGeocoder reverseGeocodeLocation:newLocation completionHandler:^( NSArray
*array, NSError
*error)
{
CLPlacemark *placeMark = [array lastObject];
if
(placeMark != nil )
{
state = [placeMark.addressDictionary objectForKey:@ "State" ];
city = [placeMark.addressDictionary objectForKey:@ "City" ];
subLocality = [placeMark.addressDictionary objectForKey:@ "SubLocality" ];
if
(city.length > 0) {
NSLog (@ "%@-%@-%@" ,state,city,subLocality);
}
else {
NSLog (@ "%@-%@" ,state,subLocality);
}
}
}];
}
|