CLLocationManager未获取城市名称 [英] CLLocationManager not getting City name
本文介绍了CLLocationManager未获取城市名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用 CLLocationManager
以下列代码取得目前的城市和国家:
I am trying to get the current city and country using CLLocationManager
with below code -
#pragma mark - Core Location Delegate Methods
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
CLGeocoder *reverseGeocoder = [[CLGeocoder alloc] init];
[reverseGeocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error)
{
NSLog(@"reverseGeocodeLocation:completionHandler: Completion Handler called!");
if (error){
NSLog(@"Geocode failed with error: %@", error);
return;
}
NSLog(@"Received placemarks: %@", placemarks);
CLPlacemark *myPlacemark = [placemarks objectAtIndex:0];
NSString *countryCode = myPlacemark.ISOcountryCode;
NSString *countryName = myPlacemark.country;
NSString *city1 = myPlacemark.subLocality;
NSString *city2 = myPlacemark.locality;
NSLog(@"My country code: %@, countryName: %@, city1: %@, city2: %@", countryCode, countryName, city1, city2);
}];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
CLLocationDirection th=[newHeading trueHeading];
NSLog(@"True Heading value is=%f",th);
CLLocationDirection magnetic=[newHeading magneticHeading];
NSLog(@"Magnetic Heading value is=%f",magnetic);
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSString *errorType = (error.code == kCLErrorDenied) ? NSLocalizedString(@"access_denied", @"") : NSLocalizedString(@"unknown_error", @"");
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"error_getting_location", @"")
message:errorType
delegate:nil
cancelButtonTitle:NSLocalizedString(@"ok", @"")
otherButtonTitles:nil];
[alert show];
}
它总是给出结果 -
It always gives the result with -
我的国家/地区代码:IN,countryName:India,city1:(null),city2:(null)
My country code: IN, countryName: India, city1: (null), city2: (null)
我不知道这可能是什么问题。任何人都遇到无法使用 CLLocationManager
I don't know what may be the issue for this. Has anyone faced this issue that can't able to get the city name using CLLocationManager
推荐答案
已编辑:
- (void) getReverseGeocode
{
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
if(currentLatLong.count > 0)
{
CLLocationCoordinate2D myCoOrdinate;
myCoOrdinate.latitude = LatValue;
myCoOrdinate.longitude = LangValue;
CLLocation *location = [[CLLocation alloc] initWithLatitude:myCoOrdinate.latitude longitude:myCoOrdinate.longitude];
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error)
{
if (error)
{
NSLog(@"failed with error: %@", error);
return;
}
if(placemarks.count > 0)
{
NSString *MyAddress = @"";
NSString *city = @"";
if([placemark.addressDictionary objectForKey:@"FormattedAddressLines"] != NULL)
MyAddress = [[placemark.addressDictionary objectForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "];
else
MyAddress = @"Address Not founded";
if([placemark.addressDictionary objectForKey:@"SubAdministrativeArea"] != NULL)
city = [placemark.addressDictionary objectForKey:@"SubAdministrativeArea"];
else if([placemark.addressDictionary objectForKey:@"City"] != NULL)
city = [placemark.addressDictionary objectForKey:@"City"];
else if([placemark.addressDictionary objectForKey:@"Country"] != NULL)
city = [placemark.addressDictionary objectForKey:@"Country"];
else
city = @"City Not founded";
NSLog(@"%@",city);
NSLog(@"%@", MyAddress);
}
}];
}
}
这篇关于CLLocationManager未获取城市名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文