Created
July 5, 2012 05:42
-
-
Save venj/3051577 to your computer and use it in GitHub Desktop.
iOS 5 Geocode question.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
用iOS 5的GeoCoder API,反向解析经纬度。代码简略如下: | |
*/ | |
CGFloat lat = 30.0; CGFloat lng = 120.0; | |
CLGeocoder *coder = [[CLGeocoder alloc] init]; | |
CLLocation *mapLocation = [[CLLocation alloc] initWithLatitude:lat longitude:lng]; | |
[coder reverseGeocodeLocation:mapLocation completionHandler:^(NSArray *placemarks, NSError *error) { | |
if (error) { | |
// Geocoder failed. | |
} | |
else { | |
CLPlacemark *mapPlaceName = [placemarks objectAtIndex:0]; | |
NSString *stateName = [mapPlaceName administrativeArea]; | |
NSLog(@"%@", stateName); | |
} | |
}]; | |
/* | |
考虑到GeoCoder返回的数据和区域语言设置有关,所以在main.m里强制指定了简体中文。如下: | |
*/ | |
int main(int argc, char *argv[]) | |
{ | |
@autoreleasepool { | |
// 强制简体中文 | |
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"zh-Hans", nil] | |
forKey:@"AppleLanguages"]; | |
[[NSUserDefaults standardUserDefaults] synchronize]; | |
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); | |
} | |
} | |
/* | |
现在的问题来了。我在两台都运行着OS X Lion 10.7.4和Xcode 4.3.3的机器上,第17行NSLog返回的省的名字不一样! | |
比如,我的机器上返回“上海市”,而另一台Mac Mini则返回“上海”;但是北京,在两台机器上的返回的字串的名字是一样的。 | |
当然,港澳台的名字两台机器上是不同的。我的机器上是大陆的行政区划;而另一台机器上则是国际上的行政区划,也就是 | |
[mapPlaceName country]返回香港,澳门,台湾,而 [mapPlaceName administrativeArea] 返回其下一级别的行政区域。 | |
CLGeocoder就这么不可预测么。。。擦! | |
注:所有测试都是在iOS模拟器上完成。 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment