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 很不错是因为它可以运行在所有的操作系统上,那么就可以说 肛交很不错,因为其可以使用于所有的性别上。

  • 相关阅读:
    js实现两种实用的排序算法——冒泡、快速排序
    node端代理浏览器路由 解决浏览器跨域问题
    HTTP Request header
    移动H5前端性能优化指南
    express下使用ES6
    Nginx Location配置总结
    NODE_ENV=production 环境变量设置
    css3逐帧动画
    js scheme 打开手机app的方法
    jQuery hashchange监听浏览器url变化
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3089562.html
Copyright © 2011-2022 走看看