zoukankan      html  css  js  c++  java
  • 工程百度IOS开发(95)之百度地图API环境搭建

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~

        

    1 媒介

        由于工作需要,要开始捣腾百度舆图了,今天上午初始牛刀,各种受阻,无法之下,半夜睡了一觉,休养生息,以备下昼大战三百回合,所幸下昼半夜把百度舆图Demo捣腾出来了,在此与大家分享,环境搭建教程,菜鸟专用,大神勿喷!

        本文旨在帮助新手倏地搭建ios版百度舆图,官网有相关教程,可是太旧了,当初的xcode都更新到了4.6,他的教程应该是在4.3之前吧。估计新手在搭建的时候必定会遇到错误,按照我的教程一步一步,保障你花最少的时光,倏地进行舆图开辟。

        机器环境:mac os x 10.8.2
    开辟环境:xcode4.6
    真机环境:iPod Touch4G 版本:6.1.2

    舆图版本:BaiduMapApi_Lib_iOS_1.2.2 下载地址:http://developer.baidu.com/map/sdk-ios.htm

    【注】:应用百度舆图的SDK需要申请key,应用名称可随便写,前提是有百度账号,概况官网查看。

        

    2 详述

        2.1 官网下载最新的SDK开辟包_iOS静态库文件 http://developer.baidu.com/map/sdkiosdev-download.htm
    解压后如下图所示:

        工程和百度

        2.2 打开xcode,新建一个demo工程(或是在你现有的工程下),创建好后把下载的的inc,libs,mapapi.bundle三个文件夹导入到工程内,注意需要copy+destination,看我如下截图:

        工程和百度

        必定要勾选copy和create group 同时要添加到target。

        2.3 几乎所有的第三方舆图sdk都是依赖于apple自有的几个framework,所以这一步需要我们导入:CoreLocation.framework和QuartzCore.framework。导入方法如下:

        工程和百度

        ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    此时如果.h导入BMapKit.h头文件,实例化BMKMapManager或是BMapView,必定会有如下的错误:

        工程和百度

        貌似提示:libbaidumapapi.a找不到,那么是路径的问题么?这就是大家常遇到的BMKMapManager错误。其实道理是系统无法链接到我们的舆图静态库,解决办法如下文:
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        2.4 上边是个小尝试和插曲,我们继续下一步,选中工程,target,切换到Build Setting标签,定位到other link flag,
    输入:-all_load

        工程和百度

        2.5 当初需要设置一下链接库的环境变量,好让项目能顺遂找到目录下的.a文件,选中工程,target,切换到build setting标签,定位到Library search Path ,如下图所示:

        工程和百度

        删除已有的三个,添加一个足矣(模拟器+真机):$(SRCROOT)/libs/Release$(EFFECTIVE_PLATFORM_NAME)
    简单解释一下:
    $(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator,这个涉及环境变量的相关知识,我也不太懂,满是自己尝试出来的,大家直接copy我这行就好了。如下:

        每日一道理
    微笑着,去唱生活的歌谣,不要埋怨生活给予了太多的磨难,不必抱怨生命中有太多的曲折。大海如果失去了巨浪的翻滚,就会失去雄浑;沙漠如果失去了飞沙的狂舞,就会失去壮观。人生如果仅去求得两点一线的一帆风顺,生命也就失去了存在的意义。

        工程和百度

        2.6 这个时候,静态库文件已设置终了,剩下的就只有代码工作了,由于需要key的验证,所以我们先需要应用BMKMapManager类,配置申请到的key,以得到授权。选中AppDelegate.h

        

    #import "BMapKit.h" //导入BMapKit.h
    
    @interface AppDelegate : UIResponder <UIApplicationDelegate>{
    BMKMapManager* _mapManager; //实例化
    }

        选中AppDelegate.m,修改成.mm,(注:静态库中采用ObjectC++实现,因此需要您保障您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm))

        【注意:如果没有mm,运行会大量报错的】

        在AppDelegate.mm中的didFinishLaunchingWithOptions,加入如下代码:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // 要应用百度舆图,请先启动BaiduMapManager
    	_mapManager = [[BMKMapManager alloc]init];
        // 如果要关注网络及授权验证事件,请设定generalDelegate参数
    	BOOL ret = [_mapManager start:@"3830003D1DAFE904D7226E48F2F488262D5B23D2" generalDelegate:nil];
    	if (!ret) {
    		NSLog(@"manager start failed!");
    	}
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        // Override point for customization after application launch.
        self.viewController = [[[ZYViewController alloc] initWithNibName:@"ZYViewController" bundle:nil] autorelease];
        self.window.rootViewController = self.viewController;
        [self.window makeKeyAndVisible];
        return YES;
    }

        2.7 在需要表现舆图的viewcontroller.m中加入如下代码:

        

    #import "ViewController.h"
    #import "BMKMapView.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad
    {
    [super viewDidLoad];
    BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 460)];
    self.view = mapView;
    }

        导入BMKMapView.h后,实例化BMKMapView类。

        2.8 在AppDelegate中授权过后,可以随便在任意的Viewcontroller中应用Mapview了。
    (当然,BMKMapManager授权也可以写到任意的ViewController中,但是这样的话,只能在这个ViewController中应用MapView,换其它类应用舆图的话,还需再来授权,否则舆图view会是黑屏):

        真机截图:

        工程和百度

        

    3 结语

        以上是所有内容,希望对大家有所帮助。

        整个进程,就中间设置环境变量比较费事,但以后不论是模拟器还是真机调试,都不必再做任何设置了,不好嘛?

        下载地址:

        百度舆图API打包:http://download.csdn.net/detail/u010013695/5414913

        

        


    文章结束给大家分享下程序员的一些笑话语录: 关于编程语言
    如果 C++是一把锤子的话,那么编程就会变成大手指头。
    如果你找了一百万只猴子来敲打一百万个键盘,那么会有一只猴子会敲出一 段 Java 程序,而其余的只会敲出 Perl 程序。
    一阵急促的敲门声,“谁啊!”,过了 5 分钟,门外传来“Java”。
    如果说 Java 很不错是因为它可以运行在所有的操作系统上,那么就可以说 肛交很不错,因为其可以使用于所有的性别上。

  • 相关阅读:
    ZOJ 2158 Truck History
    Knight Moves (zoj 1091 poj2243)BFS
    poj 1270 Following Orders
    poj 2935 Basic Wall Maze (BFS)
    Holedox Moving (zoj 1361 poj 1324)bfs
    ZOJ 1083 Frame Stacking
    zoj 2193 Window Pains
    hdu1412{A} + {B}
    hdu2031进制转换
    openjudge最长单词
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3089562.html
Copyright © 2011-2022 走看看