#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()
// Geo
@property (strong, nonatomic) IBOutlet UITextField *inputAddress;
@property (strong, nonatomic) IBOutlet UITextField *outputLonTextField;
@property (strong, nonatomic) IBOutlet UITextField *outputLanTextField;
// Reverse Geo
@property (strong, nonatomic) IBOutlet UITextField *outputAddress;
@property (strong, nonatomic) IBOutlet UITextField *inputLonTextField;
@property (strong, nonatomic) IBOutlet UITextField *inputLanTextField;
@property (nonatomic, strong) CLGeocoder *geoCoder;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
#pragma mark - 地理编码
- (IBAction)geoSearchBtnClickHandler:(id)sender
{
[self.view endEditing:YES];
[self.geoCoder geocodeAddressString:self.inputAddress.text completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
if (!placemarks.count || error) {
NSLog(@"没有找到相关经纬度哦");
return ;
}
[placemarks enumerateObjectsUsingBlock:^(CLPlacemark * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"latitude = %f, longitude = %f", obj.location.coordinate.latitude, obj.location.coordinate.longitude);
self.outputLanTextField.text = [NSString stringWithFormat:@"%f", obj.location.coordinate.latitude];
self.outputLonTextField.text = [NSString stringWithFormat:@"%f", obj.location.coordinate.longitude];
}];
}];
}
#pragma mark - 反向地理编码
- (IBAction)reverseGeoSearchBtnClickHandler:(id)sender
{
[self.view endEditing:YES];
CLLocationDegrees latitude = [self.inputLanTextField.text doubleValue];
CLLocationDegrees longitude = [self.inputLonTextField.text doubleValue];
CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
[self.geoCoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
if (!placemarks.count || error) {
NSLog(@"没有找到相关地址哦");
return ;
}
[placemarks enumerateObjectsUsingBlock:^(CLPlacemark * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"name = %@, locality = %@, administrativeArea = %@", obj.name, obj.locality, obj.administrativeArea);
if (obj.locality.length) {
self.outputAddress.text = obj.locality;
return ;
}
self.outputAddress.text = obj.administrativeArea;
}];
}];
}
- (CLGeocoder *)geoCoder
{
if (!_geoCoder) {
_geoCoder = [[CLGeocoder alloc] init];
}
return _geoCoder;
}
@end
苹果地图使用之地理编码
最新推荐文章于 2017-07-29 22:01:34 发布