美文网首页
iOS mapkit 框架定位 获取地理位置时为英文

iOS mapkit 框架定位 获取地理位置时为英文

作者: iOS开发小学生 | 来源:发表于2019-03-15 15:49 被阅读0次

iOS系统地图mapkit 框架定位系统语言在中英文切换时,强制全部返回中文位置信息的设置

在iOS开发中,用到定位时经常会遇到这个头疼的问题:系统语言为英文时返回英文或拼音,系统语言是中文时才返回中文。下面是强制系统获取的定位地点为中文。方案是网上的,但优化了一下,当逆地理编码结束后才恢复系统语言,避免一些极端情况下的不生效问题。

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation 
fromLocation:(CLLocation *)oldLocation{
    // 获取经纬度
    NSLog(@"纬度:%f",newLocation.coordinate.latitude);
    NSLog(@"经度:%f",newLocation.coordinate.longitude);
    // 停止位置更新
    [manager stopUpdatingLocation];
    // 保存 Device 的现语言 (英语 法语 ,,,)
    NSMutableArray *userDefaultLanguages = [[NSUserDefaults standardUserDefaults]
    objectForKey:@"AppleLanguages"];
    // 强制 成 简体中文
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"zh-hans",nil] 
    forKey:@"AppleLanguages"];

    // 逆地理编码
    CLGeocoder * geoCoder = [[CLGeocoder alloc] init];
    [geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
        if(!error){
            for (CLPlacemark * placemark in placemarks) {
                NSString *cityName = [placemark locality];
                NSLog(@"cityName===》%@", cityName);//这里可看到输出为中文
                break;
            }
        }
        // 还原Device 的语言
        [[NSUserDefaults standardUserDefaults] setObject:userDefaultLanguages forKey:@"AppleLanguages"];
    }];
}

其实,根据国内的APP使用情况,后台统计数据都希望是获取的是中文的地理反编译位置,所以有一个简单的方法就是在程序的启动时强制更改程序语言设置:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     //do something
    //强制设置语言为简体中文
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"zh-hans",nil] forKey:@"AppleLanguages"];
    return YES;
}
  • 这样做就可以一劳永逸了!

核心方法是

// 保存 Device 的现语言 (英语 法语 ,,,)
NSMutableArray *userDefaultLanguages = [[NSUserDefaults standardUserDefaults]
                                        objectForKey:@"AppleLanguages"];

// 强制 成 简体中文
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"zh-hans",nil]
                                              forKey:@"AppleLanguages"];
//接下来就是你想要的中文了

//用完了,转回来, 还原Device 的语言
 [[NSUserDefaults standardUserDefaults] setObject:userDefaultLanguages forKey:@"AppleLanguages"];

相关文章

  • iOS mapkit 框架定位 获取地理位置时为英文

    iOS系统地图mapkit 框架定位系统语言在中英文切换时,强制全部返回中文位置信息的设置 在iOS开发中,用到定...

  • CoreLocation定位

    定位 -在iOS开发中想要加入定位和地图功能,那么必须基于CoreLocation和MapKit2个框架进行开发-...

  • iOS Mapkit的使用

    【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等 标签:iOS地图mapkit 1.显示地图 (1)首...

  • 强制系统获取的定位地点为中文

    系统语言为英文时,定位默认返回英文或拼音,系统语言是中文时才返回中文。 需求: 强制系统获取的定位地点为中文。 此...

  • iOS14开发-定位与地图

    定位 CoreLocation 是 iOS 中用于设备定位的框架。通过这个框架可以实现定位进而获取位置信息如经度、...

  • ios地图定位大头针

    corelocation框架用于地理定位 mapkit框架用于地图展示 corelocation框架中所有数据类型...

  • iOS 地图详解

    地图定位应用场景:周边 导航 oc基于两个框架开发: CoreLocation框架 和 MapKit框架 Co...

  • Map地图

    MapKit:用于地图展示 CoreLocation:用于地理定位 CoreLocation框架的使用 CLLoc...

  • iOSMapKit地图简单使用

    一、MapKit框架使用前提 1、导入框架 2、导入主头文件 MapKit框架使用须知: MapKit框架中所有数...

  • Swift - 使用CoreLocation实现定位(经纬度、海

    CoreLocation是iOS中一个提供设备定位的框架。通过这个框架可以实现定位处理,从而获取位置数据,比如经度...

网友评论

      本文标题:iOS mapkit 框架定位 获取地理位置时为英文

      本文链接:https://www.haomeiwen.com/subject/byfrmqtx.html