user6438311
user6438311

Reputation: 137

How to get current location in ios in simulator?

i am using this code to get current location but not getting the correct result to get the current location in simulator,

-(void)initLocationManager
{
    locationManager=[[CLLocationManager alloc] init];
    locationManager.delegate = self;
    if (([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]))
    {
        [locationManager requestWhenInUseAuthorization];
    }
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.distanceFilter = kCLDistanceFilterNone;

    //[locationManager requestWhenInUseAuthorization];
    // [locationManager startMonitoringSignificantLocationChanges];
    [locationManager startUpdatingLocation];

}

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation* location = [locations lastObject];
    //   NSDate* eventDate = location.timestamp;
    // NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];

    latitud = location.coordinate.latitude;
    longitud = location.coordinate.longitude;
    NSLog(@"%f,%f",latitud,longitud);
    [locationManager stopUpdatingLocation];

}

please tell me how to get this current location, i am getting tired trying this from the morning. please help me

Upvotes: 2

Views: 7484

Answers (3)

Nitin Gohel
Nitin Gohel

Reputation: 49720

Create a GPX file by using following steps:

  • Go in project--> Add new --> iOS -- > Resource and select GPX file

enter image description here

  • Now you need to do small code in to GPX file as following:

<!--
        Provide one or more waypoints containing a latitude/longitude pair. If you provide one
        waypoint, Xcode will simulate that specific location. If you provide multiple waypoints,
        Xcode will simulate a route visitng each waypoint.
 -->
<wpt lat="37.331705" lon="-122.030237">  // here change lat long to your lat long
     <name>Cupertino</name> // here set name 

     <!--   
            Optionally provide a time element for each waypoint. Xcode will interpolate movement
            at a rate of speed based on the time elapsed between each waypoint. If you do not provide
            a time element, then Xcode will use a fixed rate of speed.

            Waypoints must be sorted by time in ascending order.
      -->
     <time>2014-09-24T14:55:37Z</time>
</wpt>

  • Now go to edit schema

    enter image description here

  • And select run and do in Option menu select like following there is appear our GPX file select that and run and close:

enter image description here

That's it now you can get location of your added lat long in GPX file.

UPDATE

Following is a code for enable location:

  • In info.plist you need set NSLocationWhenInUseUsageDescription and NSLocationWhenInUseUsageDescription about location services.

NSLocationWhenInUseUsageDescription

Now your .h class

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController : UIViewController<CLLocationManagerDelegate>
{

    __weak IBOutlet UILabel *lblLat;
    __weak IBOutlet UILabel *lblLong;
}
@property(strong,nonatomic) CLLocationManager *locationManager;
@end

.M class

- (void)viewDidLoad {
    [super viewDidLoad];

    self.locationManager = [[CLLocationManager alloc] init];
    [self.locationManager requestWhenInUseAuthorization];


    self.locationManager.delegate = self;
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    [self.locationManager startUpdatingLocation];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog(@"didFailWithError: %@", error);
    UIAlertView *errorAlert = [[UIAlertView alloc]
                               initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [errorAlert show];
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"didUpdateToLocation: %@", newLocation);
    CLLocation *currentLocation = newLocation;

    if (currentLocation != nil) {
        lblLat.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
        lblLong.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
    }
}

Working demo code: https://github.com/nitingohel/UserCurrentLocation_Objc

Upvotes: 9

Rahul Patel
Rahul Patel

Reputation: 1832

You cannot get current location directly in simulator, you have to go to location in Debug>location>custom of simulator and set latitude and longitude.

Upvotes: 2

iSashok
iSashok

Reputation: 2446

In simulator you need choose location simulation in Debug Area

enter image description here

or in Edit Scheme

enter image description here

or you can add your own GPX file with coordinates

Upvotes: 5

Related Questions