IOS百度地图

来源:互联网 发布:常见公钥算法 编辑:程序博客网 时间:2024/05/22 12:33

百度地图也是一个非常好用的地图。相对于高德的图来说,也是各有千秋的。

简介

百度地图也是一个比较成熟的地图,对于开发者来说,说道地图一般都会想到百度吧。因为百度也是做搜索引擎的,相对来说,地图上的一些统计数据会丰富准确一些。非官方称,百度地图会收录一些小道,地图更加详细。

集成步骤

2.1 申请密钥

详见:http://developer.baidu.com/map/index.php?title=iossdk/guide/key
百度地图iOS SDK开发密钥的申请地址为:http://lbsyun.baidu.com/apiconsole/key2.2
需要百度开发者账号。

2.2 注意事项

注意事项非常重要,一定要看!!
地址:http://developer.baidu.com/map/index.php?title=iossdk/guide/attention

2.3 配置环境(重点)

百度提供了. framework和 .a两种静态库,这里推荐使用. framework。配置详见:http://developer.baidu.com/map/index.php?title=iossdk/guide/buildproject

百度地图SDK提供了模拟器和真机两种环境所使用的framework,请选择相应的包或者合并为一个文件。

一、将包添加到工程中。

二、对ObjectC++支持

静态库中采用ObjectC++实现,所以建议做法是工程中至少有一个.mm后缀的源文件。还有一种解决办法为在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为”Objective-C++”。

三、引入所需的系统库

CoreLocation.framework
QuartzCore.framework
OpenGLES.framework
SystemConfiguration.framework
CoreGraphics.framework
Security.framework

四、环境配置

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC

五、引入mapapi.bundle资源文件(非必须)

主要包含了一些定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。使用基础地图的话需要一些图片和配置。也可以替换掉默认图片显示。添加方法:选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。

六、引入头文件

在使用SDK的类引入头文件:

#import <BaiduMapAPI/BMapKit.h>//引入所有的头文件#import <BaiduMapAPI/BMKMapView.h>//只引入所需的单个头文件

2.4 显示地图

首先,在AppDelegate.m文件中添加对BMKMapManager的初始化,并填入您申请的授权Key。
然后,在您的ViewController.m文件中添加BMKMapView的创建代码
详见:http://developer.baidu.com/map/index.php?title=iossdk/guide/hellobaidumap

2.5 基础地图

2.5.1 卫星图

//切换为卫星图  [_mapView setMapType:BMKMapTypeSatellite];//切换为普通地图  [_mapView setMapType:BMKMapTypeStandard];

2.5.2 实时交通图

//打开实时路况图层  [_mapView setTrafficEnabled:YES];

2.5.3 百度城市热力图

//打开百度城市热力图图层(百度自有数据)[_mapView setBaiduHeatMapEnabled:YES];//关闭百度城市热力图图层(百度自有数据)[_mapView setBaiduHeatMapEnabled:NO];

2.5.4 地图标注(重点)

一、基本标注

地图标注在开发中经常使用,并且地图标注样式灵活,需要着重注意。
在地图的基础,添加地图标注,需要两步
1、 创建地图标注BMKPointAnnotation,添加地图标注[_mapView addAnnotation:annotation];
2、 实现(BMKAnnotationView )mapView:(BMKMapView ) mapView viewForAnnotation :(id )annotation 代理方法
关于地图标注,还有很多值得关注的地方。

二、 自定义地图标注

a) 首先继承BMKPinAnnotationView或者BMKAnnotationView。他俩的区别就是BMKPinAnnotationView提供了一个默认的大头针。BMKPinAnnotationView也是BMKAnnotationView的子类。这样其实就比较明确了。
b) 一般的,自定义的标注就是更改一下显示的图片,拓展一些属性。对于更改样式的需求暂未发现。如果需要,请参考自定义的覆盖物。BMKPinAnnotationView有一个image属性,可以更改显示的图片。
c) 拓展属性,方便添加或者区分不同的标注。比如需要确定每个标注的唯一性,可以添加一个id的字段。

三、 自定义气泡

a) 关于自定义气泡,百度地图的做法是BMKPinAnnotationView提供了一个paopaoView的属性。这个属性的类型为BMKActionPaopaoView。通过给paopaoView赋值,然后实现自定义的气泡。如果paopaoView的值为空,则为默认气泡样式。
b) BMKActionPaopaoView提供了一个初始化方法,可以根据一个view去初始化。所以自定义的气泡就是自定义的view去添加。详见代码。
c) 自定义view是不需要位置信息的,但是还是需要大小。气泡会自己计算弹出来的位置,不需要另外设置,
d) 气泡的点击事件- (void)mapView:(BMKMapView )mapView annotationViewForBubble:(BMKAnnotationView )view; 当气泡被点击时,会回调此方法。

2.5.5 几何图形

2.5.6 地形图图层

2.5.7 热力图功能

2.5.8 自定义覆盖物

2.5.9 OpenGL绘制功能

2.6 定位功能

百度地图的定位,也是对于IOS定位的封装。
关于定位有几个注意的地方。
一、 定位可以单独使用,不显示在地图上。用此获取位置信息。可以根据获得的位置信息去实现自定义标注或者作为参数去请求数据之类的操作。
二、 想要实现定位功能,需要在info.plist 文件添加描述。需注意,info.plist添加之后可能不会在project下的info标签添加,如果没有,也需要手动添加。
三、 关于更改定位的样式,百度提供的方式是用mapView设置Param。方法为:
-(void)updateLocationViewWithParam:(BMKLocationViewDisplayParam*)locationViewDisplayParam;
首先创建一个BMKLocationViewDisplayParam对象,设置它的属性。
详见demo。

2.7 检索功能

注意事项

1、地图的生命周期。

(void)viewWillAppear:(BOOL)animated
{
[_mapView viewWillAppear];
_mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放
}
-(void)viewWillDisappear:(BOOL)animated
{
[_mapView viewWillDisappear];
_mapView.delegate = nil; // 不用时,置nil
}

2、Bundle display name 必须设置

3、MapManager必须保证只有一个对象创建

4、申请密钥的bundle id 一定要保证正确。bundle id必须是全部的,完整的。

参考资料

官网:http://developer.baidu.com/map/index.php?title=iossdk

0 0
原创粉丝点击