CLLocationManager反向地理编码语言。

5
我正在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个回答

7

最终我成功地找到了解决方法,现在分享给那些也需要此方法的人。

  1. 从SUserDefaults standardUserDefaults中获取“AppleLanguages”密钥并保存以备后用。
  2. 将“AppleLanguages”密钥设置为仅限“en”。
  3. 获取位置(现在仅英语)
  4. 恢复以前的“AppleLanguages”密钥。

//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"];

希望这能帮到您。

2

CLGeocoder提供了一个方便的方法来处理这种情况:

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

iOS 11及以上版本可用。


Swift:func reverseGeocodeLocation(_ location: CLLocation, preferredLocale locale: Locale?, completionHandler: @escaping CLGeocodeCompletionHandler) - Rool Paap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接