永发信息网

Xcode6.1入门ios百度地图,求帮助

答案:1  悬赏:60  手机版
解决时间 2021-11-20 10:35
Xcode6.1入门ios百度地图,求帮助
最佳答案
1,官网下载最新的SDK开发包_iOS静态库文件

  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

  #import "BMapKit.h" //导入BMapKit.h

  @interface AppDelegate : UIResponder {
  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:@"这里填你输入的key" generalDelegate:nil];
  if (!ret) {
  NSLog(@"manager start failed!");
  }
  
  
  return YES;
  }

  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类。

  8,在 AppDelegate中授权过后 ,可以随意在任意的Viewcontroller中使用Mapview了。
  (当然, BMKMapManager授权也可以写到任意的ViewController中,但是这样的话,只能在这个ViewController中使用MapView,换其它类使用地图的话,还需再来授权,否则地图view会是黑屏)。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
古装的类别或名称有哪些,拜托了,越多越好
中石油通江路加油站地址在什么地方,我要处理
可以向哪些客户推销自己的冬虫夏草,货真价实
观察填空,1=1的平方1+3=2的平方1+5=3的平方
发声亮剑的意思
求助设计大神
2015盱眙龙虾节有哪些明星
四人组游戏名~~
请大家推荐一款中等价格手机,实用型。
眉粉怎么用才能更加持久
唐山距离中捷多少里
被荆轲称赞“美哉,手也”的女子是谁?叫什么
九阳jyk-40p01怎么不出水
申通快递(宁阳东路精链大厦旁)地址好找么,我
我减肥能坚持下去么?
推荐资讯
二保焊机500X和500F有什么区别
要大便和放屁.怎么会是同一感觉
求一款叶根友轻绘字体
真三国无双3诸葛亮配烈玉(真)无双效果?
哆唻咪钢琴教室地址在什么地方,想过去办事,
y516次列车途径站在沧州站到北京西站途径几站
框架柱箍筋等截面代换在哪本图集
先到必采,只一题
车前子麦冬红小豆烧水喝起什么效果
雕塑中的屋大维脚底下站的是谁
大皇帝神张郃技能是什么 张郃到底如何使用
表面没有涂层的纸有哪些?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?