zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    java中的 equals 与 ==
    String类的内存分配
    SVN用命令行更换本地副本IP地址
    npoi 设置单元格格式
    net core 微服务框架 Viper 调用链路追踪
    打不死的小强 .net core 微服务 快速开发框架 Viper 限流
    net core 微服务 快速开发框架 Viper 初体验20201017
    Anno 框架 增加缓存、限流策略、事件总线、支持 thrift grpc 作为底层传输
    net core 微服务 快速开发框架
    Viper 微服务框架 编写一个hello world 插件02
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3788475.html
Copyright © 2011-2022 走看看