//联系人:石虎 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);
- }
- }];
-
- }
谢谢!!!