Skip to content

Instantly share code, notes, and snippets.

@venj
Created July 5, 2012 05:42
Show Gist options
  • Save venj/3051577 to your computer and use it in GitHub Desktop.
Save venj/3051577 to your computer and use it in GitHub Desktop.
iOS 5 Geocode question.
/*
用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