博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CLGeocoder基本使用
阅读量:5020 次
发布时间:2019-06-12

本文共 3897 字,大约阅读时间需要 12 分钟。

////  02-地理编码////  Created by apple on 14-8-7.//  Copyright (c) 2014年 CoderJee. All rights reserved.//#import "HMViewController.h"#import 
@interface HMViewController ()@property (nonatomic, strong) CLGeocoder *geocoder;#pragma mark - 地理编码- (IBAction)geocode;@property (weak, nonatomic) IBOutlet UITextField *addressField;@property (weak, nonatomic) IBOutlet UILabel *longitudeLabel;@property (weak, nonatomic) IBOutlet UILabel *latitudeLabel;@property (weak, nonatomic) IBOutlet UILabel *detailAddressLabel;#pragma mark - 反地理编码- (IBAction)reverseGeocode;@property (weak, nonatomic) IBOutlet UITextField *longtitudeField;@property (weak, nonatomic) IBOutlet UITextField *latitudeField;@property (weak, nonatomic) IBOutlet UILabel *reverseDetailAddressLabel;@end@implementation HMViewController- (CLGeocoder *)geocoder{ if (!_geocoder) { self.geocoder = [[CLGeocoder alloc] init]; } return _geocoder;} - (void)viewDidLoad{ [super viewDidLoad]; }/** * 地理编码:地名 -> 经纬度 */- (void)geocode{ // 1.获得输入的地址xx NSString *address = self.addressField.text; if (address.length == 0) return; // 2.开始编码 [self.geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) { if (error || placemarks.count == 0) { self.detailAddressLabel.text = @"你输入的地址找不到,可能在火星上"; } else { // 编码成功(找到了具体的位置信息) // 输出查询到的所有地标信息 for (CLPlacemark *placemark in placemarks) { // 名字, 城市,国家,邮政编码 NSLog(@"name=%@ locality=%@ country=%@ postalCode=%@", placemark.name, placemark.locality, placemark.country, placemark.postalCode); } // 显示最前面的地标信息 CLPlacemark *firstPlacemark = [placemarks firstObject]; self.detailAddressLabel.text = firstPlacemark.name; // 纬度 CLLocationDegrees latitude = firstPlacemark.location.coordinate.latitude; // 经度 CLLocationDegrees longitude = firstPlacemark.location.coordinate.longitude; self.latitudeLabel.text = [NSString stringWithFormat:@"%.2f", latitude]; self.longitudeLabel.text = [NSString stringWithFormat:@"%.2f", longitude]; } }];}/** * 反地理编码:经纬度 -> 地名 */- (void)reverseGeocode{ NSString *longtitudeText = self.longtitudeField.text; NSString *latitudeText = self.latitudeField.text; if (longtitudeText.length == 0 || latitudeText.length == 0) return; CLLocationDegrees latitude = [latitudeText doubleValue]; CLLocationDegrees longtitude = [longtitudeText doubleValue]; // 开始反向编码 CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longtitude]; [self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) { if (error || placemarks.count == 0) { self.reverseDetailAddressLabel.text = @"你输入的经纬度找不到,可能在火星上"; } else { // 编码成功(找到了具体的位置信息) // 输出查询到的所有地标信息 for (CLPlacemark *placemark in placemarks) { NSLog(@"name=%@ locality=%@ country=%@ postalCode=%@", placemark.name, placemark.locality, placemark.country, placemark.postalCode); } // 显示最前面的地标信息 CLPlacemark *firstPlacemark = [placemarks firstObject]; self.reverseDetailAddressLabel.text = firstPlacemark.name; CLLocationDegrees latitude = firstPlacemark.location.coordinate.latitude; CLLocationDegrees longitude = firstPlacemark.location.coordinate.longitude; self.latitudeField.text = [NSString stringWithFormat:@"%.2f", latitude]; self.longtitudeField.text = [NSString stringWithFormat:@"%.2f", longitude]; } }];}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self.view endEditing:YES];}@end

 

转载于:https://www.cnblogs.com/Fc-ios/p/3945678.html

你可能感兴趣的文章
nupkg 之破解 nodejs+electron-packager 打包exe的解包
查看>>
Objective-C 使用 C++类
查看>>
浅谈之高级查询over(partition by)
查看>>
Notes: CRM Analytics–BI from a CRM perspective (2)
查看>>
graphite custom functions
查看>>
列出所有的属性键
查看>>
js获取请求地址后面带的参数
查看>>
[原创]使用java批量修改文件编码(ANSI-->UTF-8)
查看>>
设计模式のCompositePattern(组合模式)----结构模式
查看>>
二进制集合枚举子集
查看>>
磁盘管理
查看>>
SAS学习经验总结分享:篇二—input语句
查看>>
UIImage与UIColor互转
查看>>
RotateAnimation详解
查看>>
系统管理玩玩Windows Azure
查看>>
c#匿名方法
查看>>
如何判断链表是否有环
查看>>
【小程序】缓存
查看>>
ssh无密码登陆屌丝指南
查看>>
MySQL锁之三:MySQL的共享锁与排它锁编码演示
查看>>