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


    项目中用到了地图相关的东西,就把曾经的demo搬了出来,结果发现直接执行之前的demo没有问题,在xcode5下新建项目再把代码粘贴过来就会提示

    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文件

    #import <UIKit/UIKit.h>
    #import <MapKit/MapKit.h>
    #import <CoreLocation/CoreLocation.h>
    
    @interface ViewController : UIViewController<CLLocationManagerDelegate> {
        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 <Foundation/Foundation.h>
    #import <CoreLocation/CoreLocation.h>
    
    @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:
                            @"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


  • 相关阅读:
    30分钟速懂Java8新特性!
    学习数据结构和算法心得
    看似简单但容易忽视的编程常识
    你应该关注的几个Eclipse超酷插件
    无谓的通宵加班之后的思索
    比特币这么火热,看看这篇比特币初学者指南
    2017年最受欢迎的十大开源黑客工具
    15分钟破解网站验证码
    我的新博客:www.wangyufeng.org
    20 岁时候的你在想些什么?
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3788475.html
Copyright © 2020-2023  润新知