how to get the current location in latitude and longitude in objective c

匿名 (未验证) 提交于 2019-12-03 02:45:02

问题:

I am using the following code to get the current location,I have added the corelocation framework

- (void)viewDidLoad {     [super viewDidLoad];      locationManager = [[CLLocationManager alloc] init];     locationManager.delegate = self;     locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move     locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m     [locationManager startUpdatingLocation];  }  - (void)locationManager:(CLLocationManager *)manager     didUpdateToLocation:(CLLocation *)newLocation            fromLocation:(CLLocation *)oldLocation {     int degrees = newLocation.coordinate.latitude;     double decimal = fabs(newLocation.coordinate.latitude - degrees);     int minutes = decimal * 60;     double seconds = decimal * 3600 - minutes * 60;     NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"",                       degrees, minutes, seconds];     NSLog(@" Current Latitude : %@",lat);     //latLabel.text = lat;     degrees = newLocation.coordinate.longitude;     decimal = fabs(newLocation.coordinate.longitude - degrees);     minutes = decimal * 60;     seconds = decimal * 3600 - minutes * 60;     NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"",                         degrees, minutes, seconds];     NSLog(@" Current Longitude : %@",longt);     //longLabel.text = longt; } 

But i am getting the default values i.e, Latitude : 42° 17' 36.8898" and Longitude : -71° 27' 43.1003" where my current Latitude:N 12° 56' 11.5624" and Longitude:E 77° 32' 41.0834". How to get the exact latitude and longitude. where i am doing the mistake or do i need to add any other method or function or framework.

Thanks in Advance.

回答1:

Test the application on real device. The Simulator will always show you the default value for Latitude and Longitude. Also make sure that the location services are enabled on your device.



回答2:

You can add this method where you need to get the current latitude and longitude:

-(CLLocationCoordinate2D) getLocation{     CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease];     locationManager.delegate = self;     locationManager.desiredAccuracy = kCLLocationAccuracyBest;     locationManager.distanceFilter = kCLDistanceFilterNone;     [locationManager startUpdatingLocation];     CLLocation *location = [locationManager location];     CLLocationCoordinate2D coordinate = [location coordinate];      return coordinate; } 

And to call it use:

CLLocationCoordinate2D coordinate = [self getLocation]; NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude];  NSLog(@"*dLatitude : %@", latitude); NSLog(@"*dLongitude : %@",longitude); 


回答3:

You have to test location service in device, not simulator, though you can enable location simulation on simulator, see my image attachment, the circled icon. But it won't be your exact location! But at least you can verify your code is working



回答4:

You need to test it on a device to get your current location's latitude and longitude, i'm guessing you are getting Cupertino's latitude and longitude which is a default.



回答5:

First You should enable Location Service in your Simulator. Debug -> Location. Most of the case you will be getting lat and long values of Cupertino. And you can set Custom locations for this option by selecting the second option(Custom Location). These option will automatically triggered when we are selecting location when runtime in Debugging area.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!