zoukankan      html  css  js  c++  java
  • 地理编码

    1、使用CLGeocoder可以完成“地理编码”和“反地理编码”

    (1)地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全称等)

    (2)反地理编码:根据给定的经纬度,获得具体的位置信息

    2、地理编码方法

    (1)编码

    - (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;

    (2)反编码

    - (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;

    3、CLGeocodeCompletionHandler

    (1)当地理反地理编码完成时,就会调用CLGeocodeCompletionHandler

       typedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);

    (2)这个block传递2个参数

      error :当编码出错时(比如编码不出具体的信息)有值

      placemarks :里面装着CLPlacemark对象

    4、CLPlacemark的字面意思是地标,封装详细的地址位置信息

    (1)地理位置

    @property (nonatomic, readonly) CLLocation *location;

    (2)区域

    @property (nonatomic, readonly) CLRegion *region;

    (3)详细的地址信息

    @property (nonatomic, readonly) NSDictionary *addressDictionary;

    (4)地址名称

    @property (nonatomic, readonly) NSString *name;

    (5)城市

    @property (nonatomic, readonly) NSString *locality;

    5、示例代码

    #import "ViewController.h"
    
    #import <CoreLocation/CoreLocation.h>
    
    @interface ViewController ()
    
    @property (nonatomic, strong) CLGeocoder *geocode;
    
    @end
    
    
    @implementation ViewController
    
    #pragma mark - 懒加载
    
    - (CLGeocoder *)geocode {
    
        if (!_geocode) {
    
            _geocode = [[CLGeocoder alloc]init];
    
        }
    
        return _geocode;
    
    }
    
    - (IBAction)geoCodeClick:(UIButton *)sender {
     //北京  经纬度
    
        [self.geocode geocodeAddressString:@"东莞" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
    
            //地标
    
            CLPlacemark *pl =  [placemarks firstObject];
    
            //经纬度
    
            CLLocationCoordinate2D coordinate = pl.location.coordinate;
    
            NSLog(@"%f  %f",coordinate.latitude,coordinate.longitude);
    
            for ( CLPlacemark *pl in placemarks) {
    
                NSLog(@"%@",pl.name);
    
            }
    
        }];
    
    }
    
    - (IBAction)unGeoClick:(UIButton *)sender {
    
        CLLocation *loction = [[CLLocation alloc]initWithLatitude:23 longitude:118];
    
        [self.geocode reverseGeocodeLocation:loction completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
    
            //地址  字符串
    
            NSLog(@"%@",error);
    
            CLPlacemark *pl = [placemarks firstObject];
    
            NSLog(@"%@,%@",pl.name,pl.locality);    
    
        }];
    
    }
    
     
    
    @end
    
  • 相关阅读:
    java操作生成jar包 和写入jar包
    jboss配置jndi连接池
    windows 域的LDAP查询相关举例
    LDAP error Code 及解决方法
    HDU 6417
    CF1299D Around the World
    codechef Chef and The Colored Grid
    Educational Codeforces Round 82 (Rated for Div. 2)
    CF1237F Balanced Domino Placements
    CF1254E Send Tree to Charlie
  • 原文地址:https://www.cnblogs.com/cleven/p/5432240.html
Copyright © 2011-2022 走看看