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, 表示项目的名称
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当中查找相关的错误信息
百度地图展示 :
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. 设置地图的用户追踪模式
* 百度地图的定位功能与地图功能是分开 , 分别由单独的 .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, 保存了获取到的全部检索结果
* 可以查找指定类型的地方 ( 餐厅 , 电影院 , ATM, Hotel)
目标 : 查找附近的书店 , 找到书店的电话等类似操作
1. 导入搜索模块, 初始化 BMKPOISearch
2. 创建并配置一个检索项, BMKNearbySerahOption (BMKSearchOption)
3. 进行POI检索, 结果会通过代理(BMKPOISearchDelegate)回调 (代理需要置空, 否则影响释放)
4. 结果在BMKPoiResult, 关键属性 poiInfo, 保存了获取到的全部检索结果
* BMKPoiInfo 具体的检索结果信息, name, address, phone等信息
百度地图-大头针的添加
1. 直接向地图上添加大头针模型
* 大头针数据模型的协议 BMKAnnotation
* 百度地图提供了表示某个点的模型, BMKPointAnnotation
2. 自定义大头针视图
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;
{
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