Xcode4.6下添加百度地图ios版(BMapKit)详细教程(_BMKMapManager错误解决)

本文旨在帮助新手快速搭建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,应用名称可随意写,前提是有百度账号,详情官网查看。

正文

1,官网下载最新的SDK开发包_iOS静态库文件 http://developer.baidu.com/map/sdkiosdev-download.htm

解压后如下图所示:

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

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

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

--------------------------------------------------------------------------------------------------------

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

貌似提示:libbaidumapapi.a找不到,那么是路径的问题么?这就是大家常遇到的BMKMapManager错误。其实原理是系统无法链接到我们的地图静态库,解决办法如下,大家继续跟着我第四步走(这只是个小尝试和插曲,还未设置环境变量,肯定会报错)

--------------------------------------------------------------------------------------------------------

4,选中工程,target,切换到buildsetting标签,定位到other link flag,

输入:-all_load

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

删除已有的三个,添加一个足矣(模拟器+真机):$(SRCROOT)/libs/Release$(EFFECTIVE_PLATFORM_NAME)

简单解释一下:

$(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator,这个涉及环境变量的相关知识,我也不太懂,全是自己尝试出来的,大家直接copy我这行就行了。如下:

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

[cpp] view plaincopy

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

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

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

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

[cpp] view plaincopy

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  2. {
  3. // 要使用百度地图,请先启动BaiduMapManager
  4. _mapManager = [[BMKMapManager alloc]init];
  5. // 如果要关注网络及授权验证事件,请设定generalDelegate参数
  6. BOOL ret = [_mapManager start:@"这里填你输入的key" generalDelegate:nil];
  7. if (!ret) {
  8. NSLog(@"manager start failed!");
  9. }
  10. return YES;
  11. }

7,在需要显示地图的viewcontroller.m中加入如下代码:

[cpp] view plaincopy

  1. #import "ViewController.h"
  2. #import "BMKMapView.h"
  3. @interface ViewController ()
  4. @end
  5. @implementation ViewController
  6. - (void)viewDidLoad
  7. {
  8. [super viewDidLoad];
  9. BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 460)];
  10. self.view = mapView;
  11. }

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

8,在AppDelegate中授权过后,可以随意在任意的Viewcontroller中使用Mapview了。

(当然,BMKMapManager授权也可以写到任意的ViewController中,但是这样的话,只能在这个ViewController中使用MapView,换其它类使用地图的话,还需再来授权,否则地图view会是黑屏)。

模拟器截图

真机截图

结尾

整个过程,就中间设置环境变量比较麻烦,但以后不管是模拟器还是真机调试,都不用再做任何设置了,不好嘛?

时间: 2024-07-31 12:16:25

Xcode4.6下添加百度地图ios版(BMapKit)详细教程(_BMKMapManager错误解决)的相关文章

百度地图 IOS版开发经验分享

最近刚完成app中地图的应用,感觉非常的曲折,折腾了很久,刚才开始一直不能成功使用百度地图api,报一大堆的错误,后来换到高德地图,又发现服务端使用的百度的经纬度,又从高德换回百度,泪奔. 这里简单比较下高德地图和百度地图,个人觉得高德地图api导入真是非常简单,而且还分成几种版本:相比较百度地图api的导入就繁琐多了,主要是导入静态库文件,初次使用真的是繁琐,百度提供了三种导入方式,最后还是觉得合并静态库文件比较方便,不然要在xcode中作很多设置,而且还要根据各种情况更改,所以我建议还是选择

ios添加百度地图方法

Hello BaiduMapiOS SDK 引入头文件 引入静态库文件 引入系统framework 引入mapapi.bundle资源文件 初始化BMKMapManager 创建BMKMapView 引入头文件 首先将百度MapAPI提供的头文件和静态库(.a)文件拷贝到您的工程目录下,在Xcode中添加新的文件Group,引入百度MapAPI提供的头文件(请使用Xcode 4.X以上平台). 在您需要使用百度MapAPI的文件中添加以下代码 #import "BMapKit.h" 引

百度地图 iOS SDK - 新版本上线,支持iOS8、arm64、iPhone6

百度地图 iOS SDK v2.5.0 版本于10月21日下午顺利完成了新版本的上线工作,该版本主要针对 iOS8 的定位功能进行了适配:对 arm64 CPU 进行了适配:对 iPhone6 及 iPhone6 plus 的屏幕显示进行了相关的适配工作. 相信新版本的发布会给更多开发者带来开发上的便利! 新版本更新日志如下: 2014年10月21日 百度地图iOS SDK v2.5.0发布 使用Xcode6创建工程时注意事项如下: 在info.plist中添加:Bundle display n

Chrome下使用百度地图报错Cannot read property &#39;minZoom&#39; of undefined

问题:工作中在Google chome下面的js console里面测试百度地图API var map = new BMap.Map("container"); map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); TypeError: Cannot read property 'minZoom' of undefined message: "Cannot read property 'minZoom' of unde

如何在手机网站上添加百度地图(带搜索功能)

在手机网站上添加百度地图,直接用百度API里的代码就可以, http://developer.baidu.com/map/ 就可以生成地图 输入地址等一些信息,但是如何添加地址搜索 这样的地址搜索如何添加 而且添加后会出现冲突 小尖角好像是固定定位, 还没搞出来~~~

如何在网页中添加百度地图

现在大多数网站都会在联系地址页面插入地图,鉴于目前谷歌网址不能打开的原因,因此百度地图应该成为网站开发者的首选. 楼主因为要搞这个小东西,所以顺便发一篇博客分享,其实网上资料很多,楼主也是参考了网上达人资料,主要目的是为了方便以后自己查看啦! 首先,打开百度地图生成器网址:http://dev.baidu.com/wiki/static/map/API/tool/creatMap/ 点击地图快速生成器,进入选择编辑页面,这里有三步: 第一步是定位中心点,意思就是选择你想要设置的大体位置. 第二步

Ubuntu 16.04安装QQ国际版图文详细教程

      因工作需要,我安装了Ubuntu 16.04,但是工作上的很多事情需要QQ联系,然而在Ubuntu上的WebQQ很是不好用,于是在网上搜索了好多个Linux版本的QQ,然而不是功能不全,就是界面丑到爆,要么就是不稳定:最后,找到了个人认为最好用的QQ-WineQQ国际版. 说明:一开始,我在Ubuntu 16.04下安装的QQ版本是Wineqq2013SP6-20140102-Longene,但后来发现这个版本QQ在linux下问题很多,比如不能 用键盘输入密码,QQ表情使用失灵,有

ionic1 添加百度地图插件 cordova-plugin-baidumaplocation

cordova-plugin-baidumaplocation 这个插件返回的数据是 json 格式的  可以直接获取  android 和 ios 都可用 1.先去百度地图平台去创建应用  获取访问应用AK  android 和 ios 是分开的 不同的 http://lbsyun.baidu.com/ 2.创建的时候需要发布版SHA1和开发板SHA1 参考链接:https://blog.csdn.net/lhg_55/article/details/52139277  (亲测有效) 3.添加

Android Studio下加入百度地图的使用(二)——定位服务

上一章(http://www.cnblogs.com/jerehedu/p/4891216.html)中我们已经完成了环境的搭建,这一章我们来研究一下如何使用. 第一步:在xml文件中加入以下权限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.android.launcher.permission.READ_S