集成百度地图SDK--简单集成

近来比较闲 想试试百度地图SDK。个人感觉集成第三方的SDK基本方法一致,一般都在APPDelegate中注册请求授权(appKey),然后再在具体的类中使用某些方法。也许有些第三方文档中介绍的不是很详细或者某些介绍我们没有很好地理解在集成的过程中会出现些问题,但好在"百度或Google是最好的老师",依托强大的搜索功能,我们可以从前人那里得到很多有用的经验。

######大部分跟着文档走就可以了,好多代码都是直接拷贝文档中介绍的

首先搜索打开百度地图开放平台

然后打开__开发__-->iOS地图SDK,如果要集成其他服务,则可以选择其他服务SDK。

下载SDK: 进入以后,看到__相关下载__,点击它,下载SDK

我这里点的__全部下载__

创建应用、获取appKey: 第三方都会有密钥,这里也是,点击左边的__获取密钥__,然后点击创建应用。

填写应用名称、选择应用类型(这里选择iOS SDK),应用服务中哪些不需要可去除勾选,安全码即是你应用的bundle identifier。然后提交即可

我的结果:

开发指南: 然后根据开发指南文档去集成相关服务功能。需要注意其中的__注意事项__和__配置开发环境__

我采用的是手动配置.framework形式开发包

__注意事项__中第一条和__配置开发环境__中第一步:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即在Xcode的Project -> Edit Active Target -> Build Setting 中找到 Compile Sources As,并将其设置为"Objective-C++";可是我根据后者方法,编译报错,而根据前者将任意一个.m文件修改为.mm则可以,不清楚什么原因。

__配置开发环境__中第六步、引入头文件 在使用SDK的类 按需 引入下边的头文件:

#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件
 
#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件
 
#import <BaiduMapAPI_Search/BMKSearchComponent.h>//引入检索功能所有的头文件
 
#import <BaiduMapAPI_Cloud/BMKCloudSearchComponent.h>//引入云检索功能所有的头文件
 
#import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的头文件
 
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>//引入计算工具所有的头文件
 
#import <BaiduMapAPI_Radar/BMKRadarComponent.h>//引入周边雷达功能所有的头文件
 
#import <BaiduMapAPI_Map/BMKMapView.h>//只引入所需的单个头文件
复制代码

直接拷贝它们,然后放到APPDelegate.m和相关控制器中。

Hello BaiduMap__中的__创建BMKMapView:

在您的ViewController.m文件中添加BMKMapView的创建代码,示例如下
- (void)viewDidLoad {  
    [super viewDidLoad];  
    BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    self.view = mapView;      
}
自2.0.0起,BMKMapView新增viewWillAppear、viewWillDisappear方法来控制BMKMapView的生命周期,并且在一个时刻只能有一个BMKMapView接受回调消息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中调用BMKMapView的对应的方法,并处理delegate,代码如下:
-(void)viewWillAppear:(BOOL)animated    
{    
    [_mapView viewWillAppear];    
    _mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放    
}    
-(void)viewWillDisappear:(BOOL)animated    
{    
    [_mapView viewWillDisappear];    
      _mapView.delegate = nil; // 不用时,置nil    
}
复制代码

你会发现ViewDidLoad中mapView为局部变量,而viewWillAppear:和viewWillDisappear:中却是全局变量,这里可在@interface处声明为全局变量,再修改viewDidLoad代码。

至此,其他配置根据文档中操作就可以编译运行成功了。

注: 开发指南__中有一项__检索功能,其中有一项功能为__POI检索__,使用此功能需要遵守BMKPoiSearchDelegate协议,并且也要在@interface处声明一个全局变量。运行发现,总会提示"周边检索发送失败",打印错误码则为10,即

BMK_SEARCH_PERMISSION_UNFINISHED,///还未完成鉴权,请在鉴权通过后重试
复制代码

即在AppDelegate中还未权鉴完成,这边就已经发了请求。因此,在代码中延迟POI请求的时机就可解决。

Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值