菜单

集成都百货度地图SDK,百度地图一

2019年9月16日 - 4166am金沙下载
集成都百货度地图SDK,百度地图一

废话不多说直接开始:

图片 172C65630-16DB-42F5-BA55-02F79EB1FEFE.png图片 2FDAA40AF-646C-4EC7-B284-83621E23479B.png

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

准备工作: 申请百度账号, 创建一个xcode项目

首先获取密钥 <和项目的bundle ID 相关,所以一个密钥最好只关联一个项目>,得到的AK就是我们所需要的密钥

图片 3D51A5227-7BD4-43B7-8B3D-4B520F8A4DB6.png

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

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

图片 4

屏幕快照 2017-05-12 15.10.10.png

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

图片 5

643F60A6-1FC3-43D8-A5BC-22EC34792891.png

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

我这里点的全部下载

图片 6

8491C702-E8EE-4876-BF1A-7C6F2DEC2234.png

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

图片 7

0C1C4BF1-E24E-4605-ABCF-C2D4CF55EA7A.png

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

我的结果:

图片 8

屏幕快照 2017-05-12 15.26.35.png

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

我采用的是手动配置.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

需求注意以下事项:

图片 9691669D6-04C2-4340-9B17-76E036F48BBD.png图片 10550E5280-370D-43A5-9EAE-B7D946955B5F.png图片 113249C747-E32B-4842-9659-CB2972185EBC.png图片 128DC00895-DE00-4345-AAC1-98C7C0A8CDAC.png

1 > 在AppDelegate里面初始化BMKMapManager
mapManager = [[BMKMapManager alloc] init];BOOL ret = [mapManager start:@"在此处输入您的授权Key" generalDelegate:nil];if  { NSLog(@"manager start failed");}

注意点: 一定要开开发文档的注意事项

将百度地图SDK中所有的.framework拖进项目中

2 > 创建BMKMapView

图片 13Simulator
Screen Shot 2017年6月23日 下午4.26.19.png

图片 14B34D3A2F-BACC-4180-9349-0FA717BA4E6E.png图片 15AF884066-BB55-4DB8-8D6D-6D7D391814E4.png图片 16D7BB245C-B4F3-451C-80A3-E53AA69165A2.png

1 > 定位显示类型

目前为止,BMKMapView的定位模式(userTrackingMode)有4种分别是:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图