[IOS地图开发系类]2、位置解码CLGeocoder
生活随笔
收集整理的這篇文章主要介紹了
[IOS地图开发系类]2、位置解码CLGeocoder
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
?接第一步的操作,獲取到地址信息經緯度后,我們可以對其進行解碼,解碼采用的CLGeocoder這個類,使用方式如下:
1、在ViewControlelr.m文件中聲明一個CLGeocoder的屬性,給頁面加一個button,然后在處理方法中,對上一篇獲取的地址坐標進行解碼,
code如下:
// // ViewController.m // LBS_001_CLLocationManager // // Created by liqun on 13-7-17. // Copyright (c) 2013年 Block Cheng. All rights reserved. //#import "ViewController.h" #import <CoreLocation/CoreLocation.h> #import <MapKit/MapKit.h> @interface ViewController ()<CLLocationManagerDelegate,MKMapViewDelegate>{ } @property (nonatomic,retain)CLLocationManager* locationManager; @property (nonatomic,retain)CLLocation* location; @property (nonatomic, retain) CLGeocoder *myGeocoder; @end@implementation ViewController-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {_locationManager = [[CLLocationManager alloc] init];}return self; } - (void)dealloc {self.locationManager = nil;self.location = nil;self.myGeocoder = nil;[super dealloc]; } - (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.//delegateself.locationManager.delegate = self;//The desired location accuracy. self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;//Specifies the minimum update distance in meters.self.locationManager.distanceFilter = kCLDistanceFilterNone;self.locationManager.purpose =@"To provide functionality based on user's current location.";[self.locationManager startUpdatingLocation];UIButton *addBt = [UIButton buttonWithType:UIButtonTypeRoundedRect];addBt.frame = CGRectMake(0, 00, 320, 50);[addBt setTitle:@"locationMe" forState:UIControlStateNormal];[addBt addTarget:self action:@selector(handleLocationMe:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:addBt];self.myGeocoder = [[CLGeocoder alloc] init]; }- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {NSLog(@"didChangeAuthorizationStatus---%u",status); }- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {NSLog(@"didChangeAuthorizationStatus----%@",error); }- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {UIAlertView* av = [[UIAlertView alloc] initWithTitle:@"update" message:[NSString stringWithFormat:@"didUpdateToLocation: newLocation: %@ old:%@",newLocation,oldLocation] delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];[av show];[av release];self.location = newLocation;NSLog(@"didUpdateToLocation: newLocation: %@",newLocation); }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }-(IBAction)handleLocationMe:(id)sender {[self.myGeocoderreverseGeocodeLocation:self.location completionHandler:^(NSArray *placemarks, NSError *error) {if (error == nil &&[placemarks count] > 0){CLPlacemark *placemark = [placemarks objectAtIndex:0];/* We received the results */NSLog(@"Country = %@", placemark.country);NSLog(@"Postal Code = %@", placemark.postalCode);NSLog(@"Locality = %@", placemark.locality);NSLog(@"dic = %@", placemark.addressDictionary );NSLog(@"dic FormattedAddressLines= %@", [placemark.addressDictionary objectForKey:@"FormattedAddressLines"]);NSLog(@"dic Name = %@", [placemark.addressDictionary objectForKey:@"Name"]);NSLog(@"dic State = %@", [placemark.addressDictionary objectForKey:@"State"]);NSLog(@"dic Street = %@", [placemark.addressDictionary objectForKey:@"Street"]);NSLog(@"dic SubLocality= %@", [placemark.addressDictionary objectForKey:@"SubLocality"]);NSLog(@"dic SubThoroughfare= %@", [placemark.addressDictionary objectForKey:@"SubThoroughfare"]);NSLog(@"dic Thoroughfare = %@", [placemark.addressDictionary objectForKey:@"Thoroughfare"]);}else if (error == nil &&[placemarks count] == 0){NSLog(@"No results were returned.");}else if (error != nil){NSLog(@"An error occurred = %@", error);}}]; } @end 日志輸出如下:
2013-07-28 20:47:16.578 LBS_001_CLLocationManager[30123:907] didChangeAuthorizationStatus---3 2013-07-28 20:47:17.288 LBS_001_CLLocationManager[30123:907] didUpdateToLocation: newLocation: <+39.93751238,+116.34143052> +/- 65.00m (speed -1.00 mps / course -1.00) @ 13-7-28 中國標準時間下午8時47分16秒 2013-07-28 20:47:17.300 LBS_001_CLLocationManager[30123:907] didUpdateToLocation: newLocation: <+39.93751238,+116.34143052> +/- 65.00m (speed -1.00 mps / course -1.00) @ 13-7-28 中國標準時間下午8時47分16秒 2013-07-28 20:47:17.351 LBS_001_CLLocationManager[30123:907] didUpdateToLocation: newLocation: <+39.93770077,+116.34199932> +/- 70.88m (speed -1.00 mps / course -1.00) @ 13-7-28 中國標準時間下午8時47分16秒 2013-07-28 20:47:17.392 LBS_001_CLLocationManager[30123:907] didUpdateToLocation: newLocation: <+39.93767287,+116.34189085> +/- 65.00m (speed -1.00 mps / course -1.00) @ 13-7-28 中國標準時間下午8時47分17秒 2013-07-28 20:47:51.976 LBS_001_CLLocationManager[30123:907] Country = 中國 2013-07-28 20:47:51.977 LBS_001_CLLocationManager[30123:907] Postal Code = (null) 2013-07-28 20:47:51.979 LBS_001_CLLocationManager[30123:907] Locality = (null) 2013-07-28 20:47:51.980 LBS_001_CLLocationManager[30123:907] dic = {Country = "\U4e2d\U56fd";CountryCode = CN;FormattedAddressLines = ("\U4e2d\U56fd\U5317\U4eac\U5e02\U897f\U57ce\U533a\U5c55\U89c8\U8def\U8857\U9053\U897f\U76f4\U95e8\U5916\U5927\U8857132\U53f7");Name = "\U4e2d\U56fd\U5317\U4eac\U5e02\U897f\U57ce\U533a\U5c55\U89c8\U8def\U8857\U9053\U897f\U76f4\U95e8\U5916\U5927\U8857132\U53f7";State = "\U5317\U4eac\U5e02";Street = "\U897f\U76f4\U95e8\U5916\U5927\U8857 132\U53f7";SubLocality = "\U897f\U57ce\U533a";SubThoroughfare = "132\U53f7";Thoroughfare = "\U897f\U76f4\U95e8\U5916\U5927\U8857"; } 2013-07-28 20:47:51.982 LBS_001_CLLocationManager[30123:907] dic FormattedAddressLines= ("\U4e2d\U56fd\U5317\U4eac\U5e02\U897f\U57ce\U533a\U5c55\U89c8\U8def\U8857\U9053\U897f\U76f4\U95e8\U5916\U5927\U8857132\U53f7" ) 2013-07-28 20:47:51.983 LBS_001_CLLocationManager[30123:907] dic Name = 中國北京市西城區展覽路街道西直門外大街132號 2013-07-28 20:47:51.985 LBS_001_CLLocationManager[30123:907] dic State = 北京市 2013-07-28 20:47:51.986 LBS_001_CLLocationManager[30123:907] dic Street = 西直門外大街 132號 2013-07-28 20:47:51.987 LBS_001_CLLocationManager[30123:907] dic SubLocality= 西城區 2013-07-28 20:47:51.988 LBS_001_CLLocationManager[30123:907] dic SubThoroughfare= 132號 2013-07-28 20:47:51.989 LBS_001_CLLocationManager[30123:907] dic Thoroughfare = 西直門外大街
轉載于:https://my.oschina.net/chengliqun/blog/147871
總結
以上是生活随笔為你收集整理的[IOS地图开发系类]2、位置解码CLGeocoder的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: base函数
- 下一篇: Android应用程序之间共享文字和图片