項目中用到瞭地圖相關的東西,就把以前的demo搬瞭出來,結果發現直接運行之前的demo沒有問題,在xcode5下新建項目再把代碼粘貼過來就會提示
May 5 11:36:21 infomedia-iPod-touch TestLocation[1465] : CGBitmapContextCreate: unsupported parameter combination: 5 integer bits/component; 16 bits/pixel; 3-component color space; kCGImageAlphaNoneSkipLast; 512 bytes/row. May 5 11:36:21 infomedia-iPod-touch TestLocation[1465] : CGBitmapContextCreate: unsupported parameter combination: 5 integer bits/component; 16 bits/pixel; 3-component color space; kCGImageAlphaNoneSkipLast; 512 bytes/row. 2014-05-05 11:36:21.974 TestLocation[1465:8b03] vImage decode failed, falling back to CG path. 2014-05-05 11:36:21.969 TestLocation[1465:9003] vImage decode failed, falling back to CG path. May 5 11:36:22 infomedia-iPod-touch TestLocation[1465] : CGBitmapContextCreate: unsupported parameter combination: 5 integer bits/component; 16 bits/pixel; 3-component color space; kCGImageAlphaNoneSkipLast; 512 bytes/row. 2014-05-05 11:36:22.653 TestLocation[1465:a003] vImage decode failed, falling back to CG path. May 5 11:36:22 infomedia-iPod-touch TestLocation[1465] : CGBitmapContextCreate: unsupported parameter combination: 5 integer bits/component; 16 bits/pixel; 3-component color space; kCGImageAlphaNoneSkipLast; 512 bytes/row. 2014-05-05 11:36:22.691 TestLocation[1465:9503] vImage decode failed, falling back to CG path. May 5 11:36:22 infomedia-iPod-touch TestLocation[1465] : CGBitmapContextCreate: unsupported parameter combination: 5 integer bits/component; 16 bits/pixel; 3-component color space; kCGImageAlphaNoneSkipLast; 512 bytes/row. 2014-05-05 11:36:22.711 TestLocation[1465:890b] vImage decode failed, falling back to CG path. May 5 11:36:22 infomedia-iPod-touch TestLocation[1465] : CGBitmapContextCreate: unsupported parameter combination: 5 integer bits/component; 16 bits/pixel; 3-component color space; kCGImageAlphaNoneSkipLast; 512 bytes/row. 2014-05-05 11:36:22.725 TestLocation[1465:9003] vImage decode failed, falling back to CG path. May 5 11:36:22 infomedia-iPod-touch TestLocation[1465] : CGBitmapContextCreate: unsupported parameter combination: 5 integer bits/component; 16 bits/pixel; 3-component color space; kCGImageAlphaNoneSkipLast; 512 bytes/row. 2014-05-05 11:36:22.733 TestLocation[1465:9b03] vImage decode failed, falling back to CG path. May 5 11:36:22 infomedia-iPod-touch TestLocation[1465] : CGBitmapContextCreate: unsupported parameter combination: 5 integer bits/component; 16 bits/pixel; 3-component color space; kCGImageAlphaNoneSkipLast; 512 bytes/row. 2014-05-05 11:36:22.736 TestLocation[1465:8b03] vImage decode failed, falling back to CG path. May 5 11:36:22 infomedia-iPod-touch TestLocation[1465] : CGBitmapContextCreate: unsupported parameter combination: 5 integer bits/component; 16 bits/pixel; 3-component color space; kCGImageAlphaNoneSkipLast; 512 bytes/row. 2014-05-05 11:36:22.777 TestLocation[1465:9207] vImage decode failed, falling back to CG path.
檢查瞭很多遍,代碼一模一樣,就是代理方法不執行,到網上搜瞭好多資料,沒有解決。最後想到在xcode5和xcode4.6下開發的差異,估計是arc搗的鬼,然後把arc改為NO,結果就正常運行瞭。順便把代碼貼出來……
工具:xcode5.0
1.新建一個single view application ,導入map kit和core location庫,將arc改為NO
2.ViewController.h文件
#import #import #import @interface ViewController : UIViewController { MKMapView *_mapView; UILabel *_showLabel; } @end
ViewController.m文件
#import "ViewController.h" #import "MapAddress.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; CLLocationManager* manager = [[CLLocationManager alloc] init]; //定位的精確度 manager.desiredAccuracy = kCLLocationAccuracyBest; //定位距離 manager.distanceFilter = 1; manager.delegate = self; //開始定位 [manager startUpdatingLocation]; //地圖 _mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; _mapView.showsUserLocation = YES; [self.view addSubview:_mapView]; } //定位成功 - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ //當前的位置 CLLocation* newLocation = [locations lastObject]; NSString* str = [MapAddress getGoogleAddress:newLocation]; NSLog(@"%@",str); //停止定位 //[manager stopUpdatingLocation]; //地圖顯示 //定位後的經緯度 CLLocationCoordinate2D coordinate = newLocation.coordinate; //縮放比例 MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1); //確定要顯示的區域 MKCoordinateRegion region = MKCoordinateRegionMake(coordinate, span); //讓地圖顯示這個區域 [_mapView setRegion:region animated:YES]; } //定位失敗 - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ NSLog(@"定位失敗"); } @end
3.MapAddress.h文件
#import #import @interface MapAddress : NSObject + (NSString *) getBaiduAddress:(CLLocation *)location; + (NSString *) getGoogleAddress:(CLLocation *)location; @end
MapAddress.m文件
#import "MapAddress.h" @implementation MapAddress + (NSString *) getBaiduAddress:(CLLocation *)location { double latitude = location.coordinate.latitude; double longtitude = location.coordinate.longitude; NSString *urlstr = [NSString stringWithFormat: @"https://api.map.baidu.com/geocoder?output=json&location=%f,%f&key=dc40f705157725fc98f1fee6a15b6e60", latitude, longtitude]; NSURL *url = [NSURL URLWithString:urlstr]; NSString *s = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; return s; } + (NSString *) getGoogleAddress:(CLLocation *)location { NSString *urlstr = [NSString stringWithFormat: @"https://maps.google.com/maps/api/geocode/json?latlng=%f,%f&language=zh-CN&sensor=false", location.coordinate.latitude, location.coordinate.longitude]; NSLog(@"%@", urlstr); NSURL *url = [NSURL URLWithString:urlstr]; NSString *s = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; return s; } @end