更新时间:2020-06-23
调起百度地图功能介绍
百度地图SDK提供简单的接口调用,通过调起百度地图客户端,实现复杂的业务逻辑。
目前所支持的调起类型有:POI周边检索、POI详情检索、POI全景、步行线路规划、驾车线路规划、新能源车路线规划、货车路线规划、公交线路规划、驾车导航、新能源车导航、摩托车导航、货车导航、步行导航、骑行导航、步行AR导航。
注意:当手机中安装了百度地图App(版本号为8.8及以上版本),可直接调起百度地图客户端;当没有安装或版本号不符合要求,则默认调起百度地图WebApp展示,开发者可以通过BaiduMapRoutePlan中的setSupportWebRoute设置是否支持调起WebApp;同时请确保传入的坐标类型要跟SDK的全局类型一致。
环境配置
使用调起百度地图客户端功能,必须在"Info.plist"中进行如下配置,否则不能调起百度地图客户端。
<key>LSApplicationQueriesSchemes</key> <array> <string>baidumap</string> </array>
实现步骤
以公交线路规划调起百度地图为例,介绍具体使用方法:
1引入头文件
调起百度地图客户端是SDK工具组件的的能力,需引入头文件:
Objective-C
Swift
#import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加 #import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
2初始化调起百度地图公交路线时传入的参数
Objective-C
Swift
BMKOpenTransitRouteOption *option = [[BMKOpenTransitRouteOption alloc] init]; //公交策略,默认:BMK_OPEN_TRANSIT_RECOMMAND(异常值,强制使用BMK_OPEN_TRANSIT_RECOMMAND) option.openTransitPolicy = BMK_OPEN_TRANSIT_RECOMMAND; //指定返回自定义scheme option.appScheme = @"baidumapsdk://mapsdk.baidu.com"; //调起百度地图客户端失败后,是否支持调起web地图,默认:YES option.isSupportWeb = YES; //实例化线路检索节点信息类对象 BMKPlanNode *start = [[BMKPlanNode alloc]init]; //指定起点名称 start.name = @"西直门"; //指定起点经纬度 start.pt = CLLocationCoordinate2DMake(39.90868, 116.204); //指定起点 option.startPoint = start; //实例化线路检索节点信息类对象 BMKPlanNode *end = [[BMKPlanNode alloc]init]; //指定终点名称 end.pt = CLLocationCoordinate2DMake(39.90868, 116.3956); //终点名称 end.name = @"天安门"; //终点节点 option.endPoint = end;
let option = BMKOpenTransitRouteOption.init() //公交策略,默认:BMK_OPEN_TRANSIT_RECOMMAND(异常值,强制使用BMK_OPEN_TRANSIT_RECOMMAND) option.openTransitPolicy = BMK_OPEN_TRANSIT_RECOMMAND //指定返回自定义scheme option.appScheme = "baidumapsdk://mapsdk.baidu.com" //调起百度地图客户端失败后,是否支持调起web地图,默认:YES option.isSupportWeb = true //实例化线路检索节点信息类对象 let start = BMKPlanNode.init() //指定起点名称 start.name = "西直门" //指定起点经纬度 start.pt = CLLocationCoordinate2DMake(39.90868, 116.204) //指定起点 option.startPoint = start //实例化线路检索节点信息类对象 let end = BMKPlanNode.init() //指定终点名称 end.pt = CLLocationCoordinate2DMake(39.90868, 116.3956) //终点名称 end.name = "天安门" //终点节点 option.endPoint = end
3调起百度地图客户端公交路线界面
Objective-C
Swift
NSInteger flag = [BMKOpenRoute openBaiduMapTransitRoute:option]; if (flag == BMK_OPEN_NO_ERROR) { NSLog(@"调起百度地图客户端公交路线界面成功!"); }
let flag = BMKOpenRoute.openBaiduMapTransitRoute(option) if flag == BMK_OPEN_NO_ERROR { print("调起百度地图客户端公交路线界面成功!") }