美文网首页
ios地图解析

ios地图解析

作者: 被风吹乱的思念 | 来源:发表于2017-08-18 19:24 被阅读28次

1.预览效果图

Untitled1.gif

2.注意点

需导入头文件
#import <CoreLocation/CoreLocation.h>//定位

3.代码展示

//地理编码
@property(nonatomic,strong) CLGeocoder *geocoder;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //创建地址解析器
    self.geocoder = [[CLGeocoder alloc]init];
    
}
//正向解析
- (IBAction)jiexi:(id)sender {
    //获取输入地址信息
    NSString *addre = self.address.text;
    if (self.address.text != nil && addre.length > 0) {
        
        [self.geocoder geocodeAddressString:addre completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
           //placemarks 只有大于 0 的时候才能表明得到的是经度和纬度
            if (placemarks.count > 0) {
                //取第一条信息
                CLPlacemark *placemark = placemarks[0];
                //经纬度
                CLLocation *location = placemark.location;
               
                
                self.textView.text = [NSString stringWithFormat:@"%@经度为:%g维度为:%g",addre,location.coordinate.longitude,location.coordinate.latitude];
            }
        }];
    }else
    {
        UIAlertView *alerView = [[UIAlertView alloc]initWithTitle:@"提醒" message:@"您输入的地址无法解析" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alerView show];
    }
    
}
//反向解析
- (IBAction)fanjiexi:(id)sender {
    //得到经纬度内容
    NSString *longgitudeStr = self.jingdu.text;
    NSString *latitudeStr = self.weidu.text;
    if (longgitudeStr.length > 0 && latitudeStr.length > 0 && longgitudeStr!= nil && latitudeStr != nil) {
        //将用户输入的经纬度封装成CLLocation对象
        CLLocation *location = [[CLLocation alloc]initWithLatitude:[latitudeStr floatValue] longitude:[longgitudeStr floatValue]];
        
        [self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
            
            //如果解析结果的集合元素大于1,表明解析得到了经度,维度信息
            if (placemarks.count > 0) {
                CLPlacemark *placmark = placemarks[0];
                NSLog(@"===%@",placmark.addressDictionary);
                //获取详细地址信息
                NSArray *addArr = [placmark.addressDictionary objectForKey:@"FormattedAddressLines"];
                //将详细地址拼接成一个字符串
                NSMutableString *addr = [[NSMutableString alloc]init];
                for (int i = 0; i < addArr.count; i ++) {
                    [addr appendString:addArr[i]];
                }
                self.textView.text = [NSString stringWithFormat:@"维度:%g经度:%g的地址为:%@",location.coordinate.latitude,location.coordinate.longitude,addr];
            }
            
        }];
        
        
    }else
    {
        UIAlertView *alerView = [[UIAlertView alloc]initWithTitle:@"提醒" message:@"您输入的地址无法解析" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alerView show];
    }
    
        
        
        
   
}

4.还有欠妥,请多多指教。

相关文章

  • ios地图解析

    1.预览效果图 2.注意点 3.代码展示 4.还有欠妥,请多多指教。

  • iOS 录音-上传与播放解析

    title : iOS 录音-上传与播放解析category : IOS iOS 录音-上传与播放解析 标签(...

  • iOS Mapkit的使用

    【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等 标签:iOS地图mapkit 1.显示地图 (1)首...

  • 责任链模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

  • 外观模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

  • 工厂模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

  • 抽象工厂模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

  • 享元模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

  • 观察者模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

  • 中介者模式

    Objective-C编程之道 iOS设计模式解析iOS设计模式解析-工厂模式iOS设计模式解析-抽象工厂模式iO...

网友评论

      本文标题: ios地图解析

      本文链接:https://www.haomeiwen.com/subject/qdwarxtx.html