博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
地理编码
阅读量:4570 次
发布时间:2019-06-08

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

- (void)geocodeBtnClick

{
    // 0.获取用户输入的位置
    NSString *addressStr = self.addressField.text;
    if (addressStr == nil || addressStr.length == 0) {
        NSLog(@"请输入地址");
        return;
    }
    // 1.创建地理编码对象
   
    // 2.利用地理编码对象编码
    // 根据传入的地址获取该地址对应的经纬度信息
    [self.geocoder geocodeAddressString:addressStr completionHandler:^(NSArray *placemarks, NSError *error) {
       
        if (placemarks.count == 0 || error != nil) {
            return ;
        }
        // placemarks地标数组, 地标数组中存放着地标, 每一个地标包含了该位置的经纬度以及城市/区域/国家代码/邮编等等...
        // 获取数组中的第一个地标
        CLPlacemark *placemark = [placemarks firstObject];
//        for (CLPlacemark  *placemark in placemarks) {
//            NSLog(@"%@ %@ %f %f", placemark.name, placemark.addressDictionary, placemark.location.coordinate.latitude, placemark.location.coordinate.longitude);
        self.latitudeLabel.text = [NSString stringWithFormat:@"%f", placemark.location.coordinate.latitude];
        self.longitudeLabel.text = [NSString stringWithFormat:@"%f", placemark.location.coordinate.longitude];
        NSArray *address = placemark.addressDictionary[@"FormattedAddressLines"];
        NSMutableString *strM = [NSMutableString string];
        for (NSString *str in address) {
            [strM appendString:str];
        }
        self.detailAddressLabel.text = strM;
       
//        }
      
       
       
    }];
}
- (CLGeocoder *)geocoder
{
    if (!_geocoder) {
        _geocoder = [[CLGeocoder alloc] init];
    }
    return _geocoder;
}

 

 

反地理编码

- (void)reverseGeocode
{
    // 1.获取用户输入的经纬度
    NSString *longtitude = self.longtitudeField.text;
    NSString *latitude = self.latitudeField.text;
    if (longtitude.length == 0 ||
        longtitude == nil ||
        latitude.length == 0 ||
        latitude == nil) {
        NSLog(@"请输入经纬度");
        return;
    }
   
    // 2.根据用户输入的经纬度创建CLLocation对象
    CLLocation *location = [[CLLocation alloc] initWithLatitude:[latitude doubleValue]  longitude:[longtitude doubleValue]];
   
    // 3.根据CLLocation对象获取对应的地标信息
    [self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
       
        for (CLPlacemark *placemark in placemarks) {
            NSLog(@"%@ %@ %f %f", placemark.name, placemark.addressDictionary, placemark.location.coordinate.latitude, placemark.location.coordinate.longitude);
            self.reverseDetailAddressLabel.text = placemark.locality;
        }
    }];
}

转载于:https://www.cnblogs.com/akkelyn/p/5083556.html

你可能感兴趣的文章
spring-mvc 框架的简单搭建
查看>>
SpringBoot(二)-- 支持JSP
查看>>
vijos1776:关押罪犯
查看>>
坐标转换
查看>>
[YTU]_2918( Shape系列-4)
查看>>
LeetCode sort-list
查看>>
结构化编程 —— 顺序、分支(选择)、循环
查看>>
Python 辨异 —— __init__ 与 __new__
查看>>
算法 Tricks(六)—— 判断一个数是否为完全平方数
查看>>
数组适配器的简单配置
查看>>
WEB UI基础八:链接跳转到标准的工单界面
查看>>
ExtJS动态设置表头
查看>>
深度(Depth)概念
查看>>
linux - camera capture
查看>>
架构设计之Spring-Session分布式集群会话管理【转】
查看>>
给HTML拍个照(如何将html元素转成图片)
查看>>
接口测试测什么?
查看>>
数据库构架设计中的Shared Everthting、Shared Nothing、和Shared Disk
查看>>
小程序调用支付报错:jsapi缺少参数: total_fee
查看>>
地址总线、数据总线、控制总线详解
查看>>