CLLocationManager reverseGeocodeLocation语言

时间:2013-12-05 00:13:14

标签: ios xcode core-location

我在iPhone上使用CLLocationManager获取当前用户位置,然后使用reverseGeocodeLocation将位置转换为地址。

这样可以正常工作,但结果以设备语言返回,我需要它们始终是英文。

有没有办法以所需语言获取地址字符串或转换它?

    [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) {
        NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
        if (error == nil && [placemarks count] > 0) {
            placemark = [placemarks lastObject];
    }

2 个答案:

答案 0 :(得分:7)

我最终设法弄明白,所以这也适合那些可能需要它的人。

  1. 获取" AppleLanguages"来自SUserDefaults standardUserDefaults的密钥并保存以供日后使用。
  2. 将" AppleLanguages键设置为" en"
  3. 抓住位置(现在只用英语)
  4. 恢复" AppleLanguages"来自之前的关键。
  5. // 1 + 2

    NSArray *currentLanguageArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"];
             //get the location
    

    // 4

    [[NSUserDefaults standardUserDefaults] setObject:currentLanguageArray forKey:@"AppleLanguages"];
    

    希望有所帮助

答案 1 :(得分:1)

CLGeocoder针对这种情况提供了一种方便的方法:

- (void)reverseGeocodeLocation:(CLLocation *)location 
               preferredLocale:(NSLocale *)locale 
             completionHandler:(CLGeocodeCompletionHandler)completionHandler;

在iOS 11及更高版本中可用。