本文主要是介绍iOS iOS10适配:地图坐标转中文地址,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//联系人:石虎 QQ: 1224614774昵称:嗡嘛呢叭咪哄 |
之前我们已经知道,在苹果原生SDK中,CoreLocation使用的都是地理坐标系WGS1984标准,在iOS10之前一直是这样的;
但是升级到iOS10以后,我们发现使用CLGeocoder类中的实例方法- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler将经纬度转中文地址的结果跟iOS9.3中不一致;
经过多次调试,得出结论是:在iOS10系统版本中用CLGeocoder类中的实例方法- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler传入CoreLocation框架获取的经纬度转中文地名的时候,必需先将获取的WGS1984经纬度转换成GCJ-02坐标。
下面是处理代码:
- - (void)reverseGeocode:(CLLocationCoordinate2D)coord
- {
-
- CLLocation *loc;
-
- CGFloat systemVersion = [[UIDevice currentDevice].systemVersion floatValue];
- if (systemVersion>=10)
- {
- CLLocationCoordinate2D wgs84ToGcj02 = [JZLocationConverter wgs84ToGcj02:coord];
- loc = [[CLLocation alloc] initWithLatitude:wgs84ToGcj02.latitude longitude:wgs84ToGcj02.longitude];
- }
- else
- {
- loc = [[CLLocation alloc] initWithLatitude:coord.latitude longitude:coord.longitude];
- }
-
-
- [self.geocoder reverseGeocodeLocation:loc completionHandler:^(NSArray *placemarks, NSError *error) {
-
- if (error) {
-
-
- }
- else
- {
-
- CLPlacemark *pm = [placemarks firstObject];
- NSLog(@“地名:%@”,pm.name);
- }
- }];
-
- }
谢谢!!!
这篇关于iOS iOS10适配:地图坐标转中文地址的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!