Possible Duplicate:
How to retrieve user's current city name?
using the following methods i am getting latitude and longitude of the current position
- (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];
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];
longLabel.text = longt;
}
now i need to get the current location name as a string... but not required on a map, how can i do this, give me some suggestion pls,,,thanx in advance
Use this common function and just pass latitude and longitude as argument in this function.
-(NSString *)getAddressFromLatLon:(double)pdblLatitude withLongitude:(double)pdblLongitude
{
NSString *urlString = [NSString stringWithFormat:kGeoCodingString,pdblLatitude, pdblLongitude];
NSError* error;
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString] encoding:NSASCIIStringEncoding error:&error];
locationString = [locationString stringByReplacingOccurrencesOfString:@"\"" withString:@""];
return [locationString substringFromIndex:6];
}
and declare this
#define kGeoCodingString @"http://maps.google.com/maps/geo?q=%f,%f&output=csv"
This function will return address of the latitude and longitude you are passing.
Hope It helps.
You are asking about Reverse Geocoding.. Use MKReverseGeocoding for this purpose.. This SO question explains it a bit..
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
[self.locationManager stopUpdatingLocation];
CLGeocoder * geoCoder = [[CLGeocoder alloc] init];
[geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
for (CLPlacemark * placemark in placemarks)
{
NSString *addressTxt = [NSString stringWithFormat:@"%@ %@,%@ %@",
[placemark subThoroughfare],[placemark thoroughfare],
[placemark locality], [placemark administrativeArea]];
NSLog(@"%@",addressTxt);
}
}];
}
You can use the google API to get the address. Probably you have to send lat and long value as parameter.
Use google reverse geoCoding
sample http call here http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false
Maybe this is what you will have to use MKReverseGeocoder
来源:https://stackoverflow.com/questions/11288815/how-to-get-the-current-location-name-as-a-string-when-we-know-the-latitude-and