(反)地理編碼
1. 概念解釋
- 地理編碼: 是指根據地址關鍵字, 將其轉換成為對應的經緯度等信息;
- 反地理編碼: 是指根據經緯度信息, 將其轉換成為對應的省市區街道等信息;
2. 測試環境
- 必須聯網
- XCode版本不限
- iOS模擬器系統版本不限
3. 地理編碼
1. 導入CoreLocation框架以及對應的主頭文件
#import <CoreLocation/CoreLocation.h>
2. 創建CLGeocoder對象
self.geoC = [[CLGeocoder alloc] init];
3. 根據地址關鍵字, 進行地理編碼
// 直接根據地址進行地理編碼(返回結果可能有多個,因為一個地點有重名)
[self.geoC geocodeAddressString:@"廣州" completionHandler:^(NSArray<CLPlacemark *> * __nullable placemarks, NSError * __nullable error)
{
// 包含區,街道等信息的地標對象
CLPlacemark *placemark = [placemarks firstObject];
// 城市名稱
NSString *city = placemark.locality;
// 街道名稱
NSString *street = placemark.thoroughfare;
// 全稱
NSString *name = placemark.name;
}];
4. 反地理編碼
1. 導入CoreLocation框架以及對應的主頭文件
#import <CoreLocation/CoreLocation.h>
2. 創建CLGeocoder對象
self.geoC = [[CLGeocoder alloc] init];
3. 根據經緯度信息, 進行反地理編碼
// 根據經緯度信息進行反地理編碼
[self.geoC reverseGeocodeLocation:[[CLLocation alloc] initWithLatitude:21.123 longitude:123.345] completionHandler:^(NSArray<CLPlacemark *> * __nullable placemarks, NSError * __nullable error)
{
// 包含區,街道等信息的地標對象
CLPlacemark *placemark = [placemarks firstObject];
// 城市名稱
NSString *city = placemark.locality;
// 街道名稱
NSString *street = placemark.thoroughfare;
// 全稱
NSString *name = placemark.name;
}];
屬性 |
類型 |
含義 |
location |
CLLocation |
位置對象信息, 里面包含經緯度, 海拔等等 |
region |
CLRegion |
地標對象對應的區域 |
addressDictionary |
NSDictionary |
存放街道,省市等信息 |
name |
NSString |
地址全稱 |
thoroughfare |
NSString |
街道名稱 |
locality |
NSString |
城市名稱 |
administrativeArea |
NSString |
省名稱 |
country |
NSString |
國家名稱 |
6. 常見問題
- 測試無數據?
- 首先, 檢查是否有聯網;
- 其次, 如果是反地理編碼,可嘗試更換經緯度再次嘗試, 有的經緯度沒有對應信息
7. 應用場景