zoukankan      html  css  js  c++  java
  • iOS

    前言

    	NS_CLASS_AVAILABLE(10_8, 5_0)
    	@interface CLGeocoder : NSObject
    
    • 地理编码

      • 地名 -> 经纬度 等具体位置数据信息。根据给定的位置(通常是地名)确定地理坐标(经、纬度)。
    • 反地理编码

      • 经纬度 -> 地名。可以根据地理坐标(经、纬度)确定位置信息(街道、门牌等)。

    1、GeoCoder 地理编码

    • 配置

      	// 包含头文件
      	#import <CoreLocation/CoreLocation.h>
      
    • 地理编码

      	// 声明 CLGeocoder 对象
      	@property (nonatomic, strong) CLGeocoder *geocoder;
      	
      	// 实例化 CLGeocoder 对象
      	self.geocoder = [[CLGeocoder alloc] init];
      
      	// 开始编码
      	[self.geocoder geocodeAddressString:self.addressField.text 
      	                  completionHandler:^(NSArray *placemarks, NSError *error) {
          
          	// 判断编码是否成功
          	if (error || 0 == placemarks.count) {
              
              	NSLog(@"erroe = %@, placemarks.count = %ld", error, placemarks.count);
              	self.detailAddressLabel.text = @"你输入的地址找不到,可能在火星上";
              
          	} else {  // 编码成功(找到了具体的位置信息)
              
              	// 输出查询到的所有地标信息
              	for (CLPlacemark *placemark in placemarks) {
                  
      				NSLog(@"name = %@, locality = %@, country = %@", placemark.name, placemark.locality, placemark.country);
              	}
              
              	// 显示最前面的地标信息
              	CLPlacemark *firstPlacemark = [placemarks firstObject];
              
              	self.longitudeLabel.text = [NSString stringWithFormat:@"%.2f", firstPlacemark.location.coordinate.longitude];
              	self.latitudeLabel.text = [NSString stringWithFormat:@"%.2f", firstPlacemark.location.coordinate.latitude];
              
              	self.detailAddressLabel.text = [NSString stringWithFormat:@"%@,%@,%@", firstPlacemark.name, firstPlacemark.locality, firstPlacemark.country];
          	}
      	}];
      
    • 反地理编码

      	// 声明 CLGeocoder 对象
      	@property (nonatomic, strong)CLGeocoder *geocoder;
      	
      	// 实例化 CLGeocoder 对象
      	self.geocoder = [[CLGeocoder alloc] init];
      
      	// 创建 CLLocation 对象
      	CLLocation *location = [[CLLocation alloc] initWithLatitude:[self.latitudeField.text doubleValue] 
      	                                                  longitude:[self.longtitudeField.text doubleValue]];
      
      	// 开始反编码
      	[self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
          
          	// 判断反编码是否成功
          	if (error || 0 == placemarks.count) {
              
              	NSLog(@"erroe = %@, placemarks.count = %ld", error, placemarks.count);
              	self.reverseDetailAddressLabel.text = @"你输入的经纬度找不到,可能在火星上";
              
          	} else {  // 反编码成功(找到了具体的位置信息)
              
              	// 输出查询到的所有地标信息
              	for (CLPlacemark *placemark in placemarks) {
                  
                  	NSLog(@"name=%@, locality=%@, country=%@", placemark.name, placemark.locality, placemark.country);
              	}
              
              	// 显示最前面的地标信息
              	CLPlacemark *firstPlacemark = [placemarks firstObject];
              
              	self.longtitudeField.text = [NSString stringWithFormat:@"%.2f", firstPlacemark.location.coordinate.longitude];
              	self.latitudeField.text = [NSString stringWithFormat:@"%.2f", firstPlacemark.location.coordinate.latitude];
              
              	self.reverseDetailAddressLabel.text = [NSString stringWithFormat:@"%@,%@,%@", firstPlacemark.name, firstPlacemark.locality, firstPlacemark.country];
          	}
      	}];
      
      	地理编码信息:
      
      		placemark.name,                                                    // 地名
      		placemark.thoroughfare,                                            // 街道
      		placemark.subThoroughfare,                                         // 街道相关信息,例如门牌等
      		placemark.locality,                                                // 城市
      		placemark.subLocality,                                             // 城市相关信息,例如标志性建筑
      		placemark.administrativeArea,                                      // 州
      		placemark.subAdministrativeArea,                                   // 其他行政区域信息
      		placemark.postalCode,                                              // 邮编
      		placemark.ISOcountryCode,                                          // 国家编码
      		placemark.country,                                                 // 国家
      		placemark.inlandWater,                                             // 水源、湖泊
      		placemark.ocean,                                                   // 海洋
      		placemark.areasOfInterest                                          // 关联的或利益相关的地标
      		 
      		placemark.addressDictionary[@"City"]];                             // 城市
      		placemark.addressDictionary[@"Country"]];                          // 国家
      		placemark.addressDictionary[@"CountryCode"]];                      // 国家编码
      		placemark.addressDictionary[@"FormattedAddressLines"][0]];         // 街道
      		placemark.addressDictionary[@"Name"]];                             // 地名
      		placemark.addressDictionary[@"State"]];                            // 州
      		placemark.addressDictionary[@"SubLocality"]];                      // 城市相关信息
      
  • 相关阅读:
    行列式的六条运算法则整理
    李昊大佬的CV模板
    洛谷P2918 [USACO08NOV]买干草(一道完全背包模板题)
    .
    洛谷P2822 组合数问题
    欧拉筛法模板&&P3383 【模板】线性筛素数
    拓展欧几里得算法
    欧几里得算法求最大公约数模板
    P2678 跳石头
    【五一qbxt】test1
  • 原文地址:https://www.cnblogs.com/QianChia/p/6213288.html
Copyright © 2011-2022 走看看