标签:style blog io color ar os 使用 sp strong
问题一: 通过一个有意义的地址得到一组经纬度数据
方案:通过 GLGeocoder 这个类的 geocodeAddressString:completionHandler 这个方法来实现。
讨论:
- (void)viewDidLoad { [super viewDidLoad]; NSString *oreillyAddress = @"1005 Gravenstein Highway North, Sebastopol, CA 95472, USA"; _myGeocoder = [[CLGeocoder alloc]init]; [_myGeocoder geocodeAddressString:oreillyAddress completionHandler:^(NSArray *placemarks, NSError *error) { if ([placemarks count] > 0 && error == nil) { NSLog(@"Found %lu placemark(s).", (unsigned long)[placemarks count]); CLPlacemark *firstPlacemark = [placemarks objectAtIndex:0]; NSLog(@"Longitude = %f", firstPlacemark.location.coordinate.longitude); NSLog(@"Latitude = %f", firstPlacemark.location.coordinate.latitude); } else if ([placemarks count] == 0 && error == nil){ NSLog(@"Found no placemarks"); } else if (error != nil){ NSLog(@"An error occurred : %@",error); } }]; }
控制台打印:
Found 1 placemark(s).
Longitude = 93.174470
Latitude = 38.983891
问题二:通过一组经纬度数据得到一个地点名称
创建一个 CLGeocoder 的实例对象,然后提供一个块对象,这个对象必须要没有返回值,而且要接收两个参数。
一个 NSArray 类型的地点标记参数,这个参数将会用来保存你讲需要查询的地理位置。
一个 NSerror 类型的参数,这个参数将会返回一些地理位置编码信息是否正确的校验信息。
- (void)reverseGeocode{ //反向地理编码 经纬度->地点名称 CLLocation *location = [[CLLocation alloc]initWithLatitude:38.983891 longitude:93.174470]; [_myGeocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) { if (error == nil && [placemarks count] > 0){ CLPlacemark *placemark = [placemarks objectAtIndex:0]; /* We received the results */ NSLog(@"Country = %@", placemark.country); NSLog(@"Postal Code = %@", placemark.postalCode); NSLog(@"Locality = %@", placemark.locality); } else if (error == nil && [placemarks count] == 0){ NSLog(@"No results were returned."); } else if (error != nil){ NSLog(@"An error occurred = %@", error); } }]; }
打印结果为:
Country = China
Postal Code = (null)
Locality = Haixi
Map3: 通过一个有意义的地址得到一组经纬度数据 通过一组经纬度数据得到一个地点名称
标签:style blog io color ar os 使用 sp strong
原文地址:http://www.cnblogs.com/safiri/p/4086771.html