iOS 第三方百度地图SDK简单使用介绍

1.-首先要在项目里面根据项目的功能需求导入相关的.Framework文件,然后在.pch文件或者具体代码文件中根据需求功能导入以下相关头文件

百度地图iOS-SDK下载地址: BaiduMap_IOSSDK_v3.1.0_All.zip
/**
 //引入base相关所有的头文件
 #import <BaiduMapAPI_Base/BMKBaseComponent.h>
   // 引入地图功能所有的头文件
 #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>
 */



/**
 2.
导入百度地图 , 展示地图界面
  
第三方SDK常见注意事项 :
   1. Object-C++
的支持
   2. Other Linker Flags
   3. Bundle display name
 
 3.百度地图以前是使用一个.a文件, 现在改成多个.framework文件
  
百度地图注意事项 :
   1.
地图视图的生命周期问题
   2.
授权的Info.plist配置问题
   3. BMKMapView
的生命周期问题要注意, 代理的设置要注意(影响释放
)
 
  
导入百度地图 :
   1.
导入相关的Framework, 根据功能决定
   2.
导入了mapapi.bundle文件到项目中
   3.
导入百度地图所引用到的系统框架
     *
尝试理解不同框架引起的错误, 利用前缀
   4.
解决C++的问题
     *
修改某个文件为.mm  (.cpp 只支持C, .m 支持C|OC, .mm 支持C|OC|C++)
     *
Build Setting 搜索 compile source as , 设置为Object C++
   5.
解决Bundle display name, 表示项目的名称

 
 4.注意: 百度地图需要额外注意生命周期问题
  
百度地图展示 :
    1.
加载BMKMapView, 得到地图视图
    2.
地图是显示或者隐藏时, 需要调用BMKMapView的相关方法, 做准备
    3. BMKMapView
的代理, 在不使用时需要置空, 否则影响内存释放

 
 5.
百度地图的定位功能 :
    *
百度地图的定位功能与地图功能是分开 , 分别由单独的 .framework 来支持
    *
核心类 : BMKLocationServices 定位服务
 1.
使用BMKLocationServices开始定位, 注意要配置Info.plist
    *
触发相关的代理方法, 代理不会有影响释放的问题
    *
定们的错误处理, BMKTypes.h当中查找相关的错误信息
    * 用户当前位置的数据模型 BMKUserLocation
 
 6.
代码相关 :
 1.
初始化BMKMapManager, 启动百度地图 (AppDelegate)
 2. 加载百度地图视图, 显示出来

百度地图的定位功能 :
    *
百度地图的定位功能与地图功能是分开 , 分别由单独的 .framework 来支持
    *
核心类 : BMKLocationServices 定位服务
 1.
使用BMKLocationServices开始定位, 注意要配置 Info.plist
    *
触发相关的代理方法 , 代理不会有影响释放的问题
    *
定们的错误处理 , BMKTypes.h 当中查找相关的错误信息
    *
用户当前位置的数据模型 BMKUserLocation
 2.
将用户位置显示出来
    *
要显示用户位置 , 要结合定位模块和地图模块
    1.
设置地图, 显示用户的位置, setShowUserLocation
    2.
让定位服务去定位  startLocationServices
    3.
将用户位置的数据动态的更新到地图视图中
updateLocationData:
    -------
能在地图上显示出用户的位置
 3.
手动设置地图显示区域
    1.
获取用户的当前位置, locationServices当中记录了最新的位置数据 userLocation (要有开启定位, 才是正确)
    2.
设置地图的显示区域 (导入百度地图的工具模块, 才能使用相关结构体的创建方法
)
        * setRegion: animated:
        * BMKCoordianteSpan, BMKCoordinateRegion
 4.
追踪用户位置
    1.
先定位, 将位置信息更新给地图 (地图需要知道用户的位置)
    2.
官方Demo做法:
        1.
关闭用户位置图层
        2.
设置地图的用户追踪模式
        3. 重新打开用户位置图层

百度地图-周边兴趣点查找 (POI - Point of interest)
    *
可以查找指定类型的地方 ( 餐厅 , 电影院 , ATM, Hotel)
 
目标 : 查找附近的书店 , 找到书店的电话等类似操作
    1.
导入搜索模块, 初始化 BMKPOISearch
    2.
创建并配置一个检索项, BMKNearbySerahOption  (BMKSearchOption)
    3.
进行POI检索, 结果会通过代理(BMKPOISearchDelegate)回调 (代理需要置空, 否则影响释放)
    4.
结果在BMKPoiResult, 关键属性 poiInfo, 保存了获取到的全部检索结果
        * BMKPoiInfo 具体的检索结果信息, name, address, phone等信息

百度地图-大头针的添加
    1.
直接向地图上添加大头针模型
        *
大头针数据模型的协议 BMKAnnotation
        *
百度地图提供了表示某个点的模型
, BMKPointAnnotation
    2.
自定义大头针视图
        * mapview的代理方法, 返回某个模型对应的视图

 */

=====百度地图中常使用到的枚举====
typedef enum
{
    BMK_COORDTYPE_GPS =
0 , ///GPS 设备采集的原始 GPS 坐标
    BMK_COORDTYPE_COMMON, 
///google 地图、 soso 地图、 aliyun 地图、 mapabc 地图和 amap 地图所用坐标
} BMK_COORD_TYPE;
enum {
    BMKMapTypeNone       =
0 ,               ///< 空白地图
    BMKMapTypeStandard   =
1 ,               ///< 标准地图
    BMKMapTypeSatellite  =
2 ,               ///< 卫星地图
};
typedef NSUInteger BMKMapType;

typedef enum {
BMKErrorOk =
0 , ///< 正确,无错误
    BMKErrorConnect =
2 , ///< 网络连接错误
BMKErrorData =
3 , ///< 数据错误
BMKErrorRouteAddr =
4 , ///< 起点或终点选择 ( 有歧义 )
BMKErrorResultNotFound =
100 , ///< 搜索结果未找到
BMKErrorLocationFailed =
200 , ///< 定位失败
BMKErrorPermissionCheckFailure =
300 , ///< 百度地图 API 授权 Key 验证失败
BMKErrorParse =
310 ///< 数据解析失败
}BMKErrorCode;

// 鉴权结果状态码
typedef enum {
    E_PERMISSIONCHECK_CONNECT_ERROR = -
300 , // 链接服务器错误
    E_PERMISSIONCHECK_DATA_ERROR = -
200 , // 服务返回数据异常
    E_PERMISSIONCHECK_OK =
0 , // 授权验证通过
E_PERMISSIONCHECK_KEY_ERROR =
101 , //ak 不存在
E_PERMISSIONCHECK_MCODE_ERROR =
102 , //mcode 签名值不正确
E_PERMISSIONCHECK_UID_KEY_ERROR =
200 , // APP 不存在, AK 有误请检查再重试
E_PERMISSIONCHECK_KEY_FORBIDEN=
201 , // APP 被用户自己禁用,请在控制台解禁
   
/*
     *
更多鉴权状态码请参考:
     *http://developer.baidu.com/map/index.php?title=lbscloud/api/appendix
     */

}BMKPermissionCheckResultCode;

// 检索结果状态码
typedef enum {
    BMK_SEARCH_NO_ERROR =
0 , ///< 检索结果正常返回
    BMK_SEARCH_AMBIGUOUS_KEYWORD,
///< 检索词有岐义
    BMK_SEARCH_AMBIGUOUS_ROURE_ADDR,
///< 检索地址有岐义
    BMK_SEARCH_NOT_SUPPORT_BUS,
///< 该城市不支持公交搜索
    BMK_SEARCH_NOT_SUPPORT_BUS_2CITY,
///< 不支持跨城市公交
    BMK_SEARCH_RESULT_NOT_FOUND,
///< 没有找到检索结果
    BMK_SEARCH_ST_EN_TOO_NEAR,
///< 起终点太近
    BMK_SEARCH_KEY_ERROR,
///<key 错误
    BMK_SEARCH_NETWOKR_ERROR,
/// 网络连接错误
    BMK_SEARCH_NETWOKR_TIMEOUT,
/// 网络连接超时
    BMK_SEARCH_PERMISSION_UNFINISHED,
/// 还未完成鉴权,请在鉴权通过后重试
    BMK_SEARCH_INDOOR_ID_ERROR,
/// 室内图 ID 错误
    BMK_SEARCH_FLOOR_ERROR,
/// 室内图检索楼层错误
    BMK_SEARCH_INDOOR_ROUTE_NO_IN_BUILDING,
/// 起终点不在支持室内路线的室内图内
    BMK_SEARCH_INDOOR_ROUTE_NO_IN_SAME_BUILDING,
/// 起终点不在同一个室内
    BMK_SEARCH_PARAMETER_ERROR,
/// 参数错误
}BMKSearchErrorCode;

// 调起百度地图结果状态码
typedef enum {
    BMK_OPEN_NO_ERROR =
0 , ///< 正常
    BMK_OPEN_WEB_MAP,
/// 打开的是 web 地图
    BMK_OPEN_OPTION_NULL,
///< 传入的参数为空
    BMK_OPEN_NOT_SUPPORT,
///< 没有安装百度地图,或者版本太低
    BMK_OPEN_POI_DETAIL_UID_NULL,
///<poi 详情 poiUid 为空
    BMK_OPEN_POI_NEARBY_KEYWORD_NULL,
///<poi 周边 keyWord 为空
    BMK_OPEN_ROUTE_START_ERROR,
///< 路线起点有误
    BMK_OPEN_ROUTE_END_ERROR,
///< 路线终点有误
    BMK_OPEN_PANORAMA_UID_ERROR,
///< 调起全景 poiUid 不正确
    BMK_OPEN_PANORAMA_ABSENT,
///< 调起全景 此处不支持全景
    BMK_OPEN_PERMISSION_UNFINISHED,
/// 还未完成鉴权,请在鉴权通过后重试
    BMK_OPEN_KEY_ERROR,
///<app key 错误
    BMK_OPEN_NETWOKR_ERROR,
/// 网络连接错误
}BMKOpenErrorCode;

有疑问请加QQ: 1084476230

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值