定位服务:4-CLGeocoder应用案例1
CLGeocoder类是用于位置名称与地理位置相互转换的类,本节的代码我们首先演示一下从地理位置获取对应的经纬度操作。
准备工作
新建一个Single View Application工程,并导入CoreLocation框架,操作方法参见前面章节。
在Storyboard中,搭建如下的界面,用于输入地理位置名称,并且显示对应的经纬度信息。建立控件与控制器类之间的连线,添加属性以及按钮的点击方法。
在控制器类中,添加一个CLGeocoder类的属性,并对其进行简单的初始化操作。
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *addressTextField;//地址
@property (weak, nonatomic) IBOutlet UITextField *lngTextField;//经度
@property (weak, nonatomic) IBOutlet UITextField *latTextField;//纬度
@property (nonatomic,strong) CLGeocoder *geocoder;
@end
- (CLGeocoder *)geocoder {
if (_geocoder == nil) {
_geocoder = [[CLGeocoder alloc] init];
}
return _geocoder;
}
实现地址翻译功能
在【获取地址的经纬度】按钮的点击方法中,添加如下代码,实现根据用户输入的地址获取该地址的经纬度,并显示到界面上。
- (IBAction)geocodeAddress:(id)sender {
//判断用户输入地址的有效性
NSString *address = self.addressTextField.text;
if ([address length] == 0) {
return;
}
[self.geocoder geocodeAddressString:self.addressTextField.text completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
//判断是否有返回信息
if ([placemarks count] > 0) {
// placemarks数组中第一个为地标信息
CLPlacemark *placemark = placemarks[0];
//获得相应的经纬度
CLLocationCoordinate2D coordinate = placemark.location.coordinate;
//显示到对应的label上面
self.latTextField.text = [NSString stringWithFormat:@"%3.5f",coordinate.latitude];
self.lngTextField.text = [NSString stringWithFormat:@"%3.5f",coordinate.longitude];
}
}];
}
运行效果如下所示,当我们输入一个地址后,点击按钮,即可显示该地址的经纬度信息。
示例代码
https://github.com/99ios/17.2.4
文章发布时间为: December 13th , 2016 at 09:59 am
最后编辑时间为: September 15th , 2017 at 08:10 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 15th , 2017 at 08:10 am
本文由 99ios 创作,转载请注明出处