最近项目中用到百度地图的功能 ,中间遇到一些问题,项目功能完成后,写一下遇到问题的总结,
关于集成百度地图的话,建议首先看一下 百度官方的文档中的《常见问题》那一项中列举出的有几成过程中会遇到的大部分问题。可以是你不必花很大的精力和时间就能够定位很多问题的所在,不过比较坑的也有一点,就是有些没有说的很明白的解决办法。这里遇到的一些 补充一下。诸君共勉
遇到问题
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // 要使用百度地图,请先启动BaiduMapManager _mapManager = [[BMKMapManager alloc]init]; // 如果要关注网络及授权验证事件,请设定 generalDelegate参数 BOOL ret = [_mapManager start:@"QLLCt3bjKts81YIeFNfyWKbB" generalDelegate:self]; NSLog(@"ret %zi",ret); if (!ret) { NSLog(@"manager start failed!"); } // Add the navigation controller's view to the window and display. [self.window addSubview:navigationController.view]; [self.window makeKeyAndVisible]; return YES;}鉴权总是在检索之后发起,请问是什么原因?下面是运行结果:2015-07-24 20:47:38.673 20150722Pio test[910:18718] 详细周边检索发送成功2015-07-24 20:47:38.674 20150722Pio test[910:18718] 周边检索发送成功2015-07-24 20:47:38.822 20150722Pio test[910:18718] 网络连接成功2015-07-24 20:47:38.823 20150722Pio test[910:18718] 鉴权成功2015-07-24 20:47:38.925 20150722Pio test[910:18718] error 10 BMK_SEARCH_PERMISSION_UNFINISHED
(一) 常见问题中的关于鉴权问题的操作
6、地图只显示网格
显示网格是由地图数据没有正常获取造成的,请检查网络是否正常,鉴权是否通过
29、检索发送失败
检查下发起检索时鉴权完成了没有,发起检索必须是在鉴权完成后,否则会发送失败
30、检索连续发送多次请求,只收到最后一个请求的结果
一个search对象,同一时间只能进行一次检索,要同时进行多个检索,需要使用多个search对象,在回调中通过search对象来区分是哪个检索
说明: 以上三个问题都有关于鉴权问题的失败,检索,定位 和鉴权有关的时候,都会失败,而且有时候需要重复调用鉴权。而且在多地图切换的时候会造成崩溃的问题。这个就是和你导入的SDK 有关系的,当你导入3.4.2之前的SDK的话,会遇到这个问题,解决办法如下
升级新版SDK若已经安装了百度iOS地图SDK,想要更新到最新版本,在Podfile文件的目录下使用以下命令pod repo update #用于保证本地地图相关SDK为最新版 pod update 使用CocoaPods的问题pod search无法搜索到类库的解决办法(找不到类库)
(1)执行pod setup
(2)删除~/Library/Caches/CocoaPods目录下的search_index.json文件pod setup成功后会生成~/Library/Caches/CocoaPods/search_index.json文件。终端输入rm ~/Library/Caches/CocoaPods/search_index.json删除成功后再执行pod search
(3)执行pod search
这里值得注意的就是如果你的cocopods版本太低,是查找不到最新的sdk 的,需要清理一下缓存,才能查找的最新的SDK。
(二)如果以上设置全部正确 而且你的SDK也是最新版本的话,仍然会报鉴权失败在使用 POI检索 功能的时候出现了这个问题,打印对应的error为10,找到对应的错误原因:(BMK_SEARCH_PERMISSION_UNFINISHED,///还未完成鉴权,请在鉴权通过后重试)
请检查你的工程中in f.plist 文件中 是否设置里
这两个Key 要保证都是有值的
CFBundleDisplayName $(PRODUCT_NAME)
CFBundleName $(PRODUCT_NAME)
https://www.cnblogs.com/findumars/p/5064742.html
这里插入CFBundle 系列解释链接供参考