iOS - GeoCoder 地理編碼
前言
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"]]; // 城市相關資訊
相關文章
- iOS專案開發實戰——CoreLocation地理編碼和反地理編碼iOS
- tableau自定義地理編碼
- 【搬磚筆記】 利用GeoHash為地理位置編碼筆記
- Location服務之Geocoder
- iOS Emoji表情編碼/解碼iOS
- iOS - KVC 鍵值編碼iOS
- IOS獲取當前地理位置文字iOS
- 【iOS】iOS開發編碼規範小結iOS
- 視訊硬編碼(iOS端)iOS
- iOS的編碼規範(1.1)iOS
- iOS團隊編碼規範iOS
- Xamarin iOS教程之編輯介面編寫程式碼iOS
- iOS開發——OC編碼規範iOS
- 【IOS】Objective-C編碼規範iOSObject
- [混編] iOS原生專案- iOS/flutter 程式碼互動iOSFlutter
- iOS文字檔案的編碼檢測iOS
- iOS Url特殊符號編碼問題iOS符號
- ffmpeg iOS平臺編譯 指令碼註釋iOS編譯指令碼
- 【iOS 搭建基礎框架】編碼規範 (程式碼格式篇)iOS框架
- iOS 編寫高質量Objective-C程式碼iOSObjectC程式
- iOS編碼需要注意的幾點問題iOS
- 實時顯示iOS編寫UI程式碼效果iOSUI
- 地理定位
- iOS 編寫高質量Objective-C程式碼(四)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(一)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(三)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(二)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(八)iOSObjectC程式
- [底層原理]iOS中函式的型別編碼iOS函式型別
- iOS編寫高質量Objective-C程式碼(四)iOSObjectC程式
- iOS編寫高質量Objective-C程式碼(二)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(五)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(六)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(七)iOSObjectC程式
- iOS編寫高質量Objective-C程式碼(六)iOSObjectC程式
- iOS彙編入門教程(二)在Xcode工程中嵌入彙編程式碼iOSXCode
- iOS 11開發教程(七)編寫第一個iOS11程式碼Hello,WorldiOS
- iOS程式碼編寫利器AppCode 2022iOSAPP