目前项目工作中用到了百度地图sdk,遇到了不少问题,在此记录一下,顺便吐槽下希望百度能把这地图sdk做的更好用一点。

1,开发环境,

Xcode6.0 (6A313) + 百度地图 iOS SDK v2.6.0,我的问题都是在这个环境下遇到的,如果环境不一样,解决方法未经验证,不一定管用。

2,准备工作

1)申请密钥(key);申请应用key,这里申请的 应用名称 和 key都需要保存,开发时会用到。百度有教程:(http://developer.baidu.com/map/index.php?title=iossdk/guide/key)

2)下载sdk,将a文件合;百度地图sdk 提供了供模拟器和真机用的两个a文件,可以用lipo -create Release-iphoneos/libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a -output libbaidumapapi.a 命令将其合并为一个

百度教程:(http://developer.baidu.com/map/index.php?title=iossdk/guide/hellobaidumap)

3)添加依赖文件;添加依赖库CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。

4)将合并好的a文件,连同mapapi.bundle 和头文件一起加入工程中

注意事项:参考百度教程:(http://developer.baidu.com/map/index.php?title=iossdk/guide/attention)

准备工作到此完成,简单的使用不再介绍,参考百度的教程就行(http://developer.baidu.com/map/index.php?title=iossdk/guide/hellobaidumap)

3,遇到的问题及解决:

1)BMKMapManager start failed 

[self.mapManager start:@"xxxxxxxxx" generalDelegate:nil]; 需要设置 Bundle display name 为注册时的应用名,且应用名要和key对应,否则会失败

Xcode6中新建的工程中没有  Bundle display name 这个属性,需要自己添加, 在supporting Files-info.plist 中新加这一属性(这个属性名下拉菜单里有),将其值设置为在百度上注册的应用名,应用名与key必须对应,否则就会初始化失败

2)Unknown class BMKMapView in Interface Builder file

如果只在xib中用到了BMKMapView这个类,而代码中没有显示的引用,那可能会出现"xxx Class not found"之类的问题,这就需要在 buildSetting中加入 -all_load ,-ObjC 的参数,具体参考http://stackoverflow.com/questions/1725881/unknown-class-myclass-in-interface-builder-file-error-at-runtime

如果你的工程因为某种原因刚好不能加  -all_load ,-ObjC ,那就只能在 代码中调用一下     [BMKMapView class]; 之类的方法。可能需要在用到的地方都加入。。。

3)从xib中加载BMKMapView,然后黑屏,卡在 [[NSBundle mainBundle] loadNibNamed:@"XXXXXXXXXXX" owner:nil options:nil] 这个方法。

这个问题目前还没找到原因,也就更不知道解决方案了,这个问题是我的demo工程出现的,我把工程删掉,新建了一个工程,类没变,就没再出现这问题了。。。有点奇葩

4)编译不通过,提示xxxxxxxxx.o 里面有undefined symbol for i386 或者armv7 什么的,

又是一个奇葩的问题,它提示的意思是你a文件要么没有模拟器的包,要么没有真机的包,但实际上包合好了之后是都有的,  原因大概是因为xcode的什么优化导致a文件里面的东西没有加载进去

解决方法,参考2),如果还不行,就把sdk的文件全部删了,再add回来,不行clean一下再删一边。。。我的问题就是这么解决的。。。

5)地图 addAnnotation的方法位置不准,或者- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated;方法位置不准

这个问题不好描述,也是个比较奇葩的问题,原因感觉是有时候它是以annotationView的中心的定位的,有时候又是用annotationView的中间最下面那一点定位的,,,,这个有待考证

暂时的解决办法是,做了一张高度是原来标志图片两倍,宽度一样的图片,有问题的地方就替换。(这里描述的很渣,如果你碰到这个问题了那你估计知道我在说什么,如果没遇到就更好了)

暂时就这些,遇到再补充。

6)iOS8下,viewDidLoad的时候,加载的view还是xib画出来的frame,直到viewDidLayoutsSubView以后才调整正确,所以在viewDidLoad的时候 设置百度地图mapView的reion会出问题,之后再调整也不管用,它的center总是在错误frame的center处

解决方案:试了一下写在viewDidAppear不管用,所以暂时的做法是:在viewDidLoad里面,在初始化mapView之前,将self.view的frame手动设置好

即:

CGRect viewFrame = self.view.frame;

viewFrame.size.width = CGRectGetWidth([UIScreen mainScreen].bounds);

viewFrame.size.height = CGRectGetHeight([UIScreen mainScreen].bounds) - CGRectGetHeight(self.searchBar.bounds);

self.view.frame = viewFrame;

self.mapView = xxxxxxxxxxxx;

百度地图SDK 遇到的问题及解决方案的更多相关文章

  1. 【月入41万】Mono For Android中使用百度地图SDK

    借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...

  2. GJM:Unity导入百度地图SDK [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  3. iOS百度地图SDK集成详细步骤

    1.iOS百度地图下载地址 http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 根据需要选择不同的版本  ...

  4. 百度地图SDK

      百度地图官方SDK文档 http://lbsyun.baidu.com/index.php?title=androidsdk   一.申请百度地图SDK 每一个app对应一个百度地图AK,百度地图 ...

  5. Android Studio集成百度地图SDK

    1.建议先阅读百度地图官方的继承指南,针对了Eclipse和Android Studio. 百度官方集成指南 2.下载百度地图SDK Android SDK v4.1.1 下载有两种: 1.一键下载( ...

  6. iOS开发之引用百度地图SDK(一)-----------SDK开发指南

    (void)viewWillAppear:(BOOL)animated { [_mapView viewWillAppear]; _mapView.delegate = self; // 此处记得不用 ...

  7. 百度地图SDK下载以及创建应用(申请Key)和本地导入Demo

    一.百度地图SDK下载 http://lbsyun.baidu.com/sdk/download?selected=location 选择全部,然后分别下载开发包.示例代码.类参考. 二.创建应用(申 ...

  8. [转贴]JAVA 百度地图SDK地图学习——实现定位功能

    之前已经完成了百度地图SDK和百度定位SDK的配置. http://my.oschina.net/u/1051634/blog/180880 实现百度定位的功能,最好仔细看看官方的文档,看了好几次才有 ...

  9. Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37758097 一直觉得地图应用支持离线地图很重要啊,我等移动2G屌丝,流量不易, ...

随机推荐

  1. .Net常见错误

    常见错误 #1: 把引用当做值来用,或者反过来 C++ 和其他很多语言的程序员,习惯了给变量赋值的时候,要么赋单纯的值,要么是现有对象的引用.然而,在C# 中,是值还是引用,是由写这个对象的程序员决定 ...

  2. c#字符串操作方法实例

    # 字符串是使用 string 关键字声明的一个字符数组.字符串是使用引号声明的,如下例所示: string s = "Hello, World!"; 字符串对象是“不可变的”,即 ...

  3. 在ASPNET中使用JS集锦

    (一).确认删除用法: 1. BtnDel.Attributes.Add("onclick","return confirm('"+"确认删除?&qu ...

  4. testing - 测试基本使用接口

    testing - 测试基本使用接口 当你写完一个函数,结构体,main之后,你下一步需要的就是测试了.testing包提供了很简单易用的测试包. 写一个基本的测试用例 测试文件的文件名需要以_tes ...

  5. Bootstrap+angularjs+MVC3+分页技术+角色权限验证系统

    1.Bootstrap使用教程 相关教程: http://www.bootcss.com/components.html 页面使用代码: <script src="@Url.Conte ...

  6. React-Native 给客户端来个「同音词模糊搜索」

    APP上线一段时间有用户反应说不方便找东西,其实APP的数据不大也就三四百条而以,但受限于手机端展示区域太小.信息大爆炸,大家也基本上不会去记具体的名称都是根据模糊的印象进行搜索而且现在大家基本都用拼 ...

  7. 问得最多的十个JavaScript前端面试问题

    我知道有很多人不同意这种类型的面试.其实不管你喜不喜欢,你都得接受.尤其当你是自学的,而且要申请第一份工作时.   我估计很多有人其它方法来证明他自己,像Github/ 项目地址可能是非常理想的证明方 ...

  8. 浅谈图片蒙版效果-webkit-mask

    会用PS的童鞋一定知道“蒙版”的概念,它可以在图片上实现一定的遮罩效果,当然这里我们不介绍ps里的蒙版,而是介绍利用CSS3的新属性-webkit-mask来实现网页中的图片遮罩效果. 大家对-web ...

  9. WPF学习之绘图和动画

    如今的软件市场,竞争已经进入白热化阶段,功能强.运算快.界面友好.Bug少.价格低都已经成为了必备条件.这还不算完,随着计算机的多媒体功能越来越强,软件的界面是否色彩亮丽.是否能通过动画.3D等效果是 ...

  10. 【C#】在窗体中水平居中的控件,到了XP下不居中的解决办法

    我时不时会遭遇这个操蛋问题,今天得闲研究了一下,解决如下: A.将窗体FormBorderStyle属性改为Fixed系,当然这会导致用户不能拖拉窗口大小,所以你可能需要B计划↓ B.确保在[VS]中 ...