進(jìn)階 13-4Map 地理編碼和反地理編碼

地理編碼:根據(jù)給定的位置(通常是地名),確定地理坐標(biāo)(經(jīng)緯度)
反地理編碼:根據(jù)給定地理坐標(biāo)(經(jīng)緯度),確定位置信息(街道,門牌等等)

#import "GeocoderOneViewController.h"
//引入定位頭文件(用于地理定位)
#import <CoreLocation/CoreLocation.h>
@interface GeocoderOneViewController ()
/* 聲明地理編碼屬性 */
@property (strong,nonatomic) CLGeocoder *geocoder;
@end

@implementation GeocoderOneViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //初始化編碼對(duì)象
    self.geocoder = [[CLGeocoder alloc] init];
//    [self getCoordinateByAddress:@"北京市"];
    [self getAddressByLatitude:40.0305627852 Longitude:116.3435577061];
}
#pragma mark --- 地理編碼 ---
- (void)getCoordinateByAddress:(NSString *)address{
    [self.geocoder geocodeAddressString:address completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        //獲取第一個(gè)地標(biāo),地標(biāo)中存儲(chǔ)了詳細(xì)的地址信息。注意:一個(gè)地名可能搜索出多個(gè)地址
        CLPlacemark *placeMark = [placemarks firstObject];
        //獲取位置
        CLLocation *location = placeMark.location;
        //獲取區(qū)域
        CLRegion *region = placeMark.region;
        //地名
        NSString *name = placeMark.name;
        
        NSDictionary *dic = placeMark.addressDictionary;
        //街道
        NSString *thoroughfare = placeMark.thoroughfare;
        //街道相關(guān)信息
        NSString *subThoroughfare = placeMark.subThoroughfare;
        
        //城市
        NSString *locality = placeMark.locality;
        //州
        NSString *administraiveArea = placeMark.administrativeArea;
        //其他行政區(qū)域信息
        NSString *subAdministrativeArea = placeMark.subAdministrativeArea;
        //郵編
        NSString *postalCode = placeMark.postalCode;
        //國(guó)家編碼
        NSString *ISOcountryCode = placeMark.ISOcountryCode;
        //國(guó)家
        NSString *country = placeMark.country;
        //水源,湖泊
        NSString *inlandWater = placeMark.inlandWater;
        //海洋
        NSString *ocean = placeMark.ocean;
        //關(guān)聯(lián)或者利益相關(guān)的地標(biāo)
        NSArray *areasOfInterest = placeMark.areasOfInterest;
        
        NSLog(@"位置:%@,區(qū)域:%@,詳細(xì)信息:%@,name:%@,街道:%@,街道詳情%@",location,region,dic,name,thoroughfare,subThoroughfare);
    }];
}

#pragma mark --- 反地理編碼 ---
- (void)getAddressByLatitude:(CLLocationDegrees)latitude Longitude:(CLLocationDegrees)longitude{
    //初始化位置信息
    CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
    
    //反地理編碼方法
    [self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * placemarks, NSError * error) {
        //取地標(biāo)中的第一個(gè)
        CLPlacemark *placeMark = [placemarks firstObject];
        NSLog(@"詳細(xì)信息:%@",placeMark.addressDictionary);
    }];
}
@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容