Blog / 阅读

iOS开发之地图代理不起作用(提示vImage decode failed, falling back to CG path.)

by admin on 2014-05-05 14:03:02 in ,



项目中用到了地图相关的东西,就把以前的demo搬了出来,结果发现直接运行之前的demo没有问题,在xcode5下新建项目再把代码粘贴过来就会提示
[objc] view plaincopy
May  5 11:36:21 infomedia-iPod-touch TestLocation[1465] <Error>: 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] <Error>: 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] <Error>: 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] <Error>: 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] <Error>: 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] <Error>: 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] <Error>: 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] <Error>: 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] <Error>: 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文件
[objc] view plaincopy
#import <UIKit/UIKit.h>  
#import <MapKit/MapKit.h>  
#import <CoreLocation/CoreLocation.h>  
  
@interface ViewController : UIViewController<CLLocationManagerDelegate> {  
    MKMapView *_mapView;  
    UILabel *_showLabel;  
}  
  
@end  


ViewController.m文件
[objc] view plaincopy
#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文件
[objc] view plaincopy
#import <Foundation/Foundation.h>  
#import <CoreLocation/CoreLocation.h>  
  
@interface MapAddress : NSObject  
  
+ (NSString *) getBaiduAddress:(CLLocation *)location;  
+ (NSString *) getGoogleAddress:(CLLocation *)location;  
@end  


MapAddress.m文件
[objc] view plaincopy
#import "MapAddress.h"  
  
@implementation MapAddress  
  
+ (NSString *) getBaiduAddress:(CLLocation *)location {  
    double latitude = location.coordinate.latitude;  
    double longtitude = location.coordinate.longitude;  
    NSString *urlstr = [NSString stringWithFormat:  
                        @"http://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:  
                        @"http://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  



写评论

相关文章

上一篇:ViewPager+Fragment+GridView的使用(与AndroidQuery框架结合)

下一篇:ios中layer动画和UIView动画代码总结

评论

写评论

* 必填.

分享

栏目

赞助商


热门文章

Tag 云