更新时间:2020-06-23
短地址分享简介
短地址分享(简称短串分享)是指,用户搜索查询后得到的每一个地理位置结果将会对应一条短串(短链接),用户可以通过短信、邮件或第三方分享组件(如微博、微信等)把短串分享给其他用户从而实现地理位置信息的分享。当其他用户收到分享的短串后,点击短串即可打开手机上的百度地图客户端或者手机浏览器进行查看。
例如,用户搜索“百度大厦”后通过短信使用短串分享功能把该地点分享给好友,好友点击短信中的短串“http://j.map.baidu.com/BkmBk” 后可以调起百度地图客户端或者手机浏览器查看“百度大厦”的地理位置信息。
目前短串分享功能开放了POI详情分享、驾车/公交/骑行/步行路线规划分享和位置信息分享。
POI详情分享短地址获取
开发者可将POI详情以短串的形式分享给其他用户。以下以POI详情短串分享的实现步骤。
实现步骤
1引入头文件
Objective-C
Swift
#import <BaiduMapAPI_Search/BMKSearchComponent.h> #import <BaiduMapAPI_Base/BMKBaseComponent.h>
// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加 #import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h>
2初始化BMKShareURLSearch的实例
Objective-C
Swift
BMKShareURLSearch *shareurlSearch = [[BMKShareURLSearch alloc] init];
let shareurlSearch = BMKShareURLSearch()
3设置shareurlSearch的代理
Objective-C
Swift
shareurlSearch.delegate = self;
shareurlSearch.delegate = self
4初始化请求参数类BMKPoiDetailShareURLOption
Objective-C
Swift
BMKPoiDetailShareURLOption *detailShareUrlSearchOption = [[BMKPoiDetailShareURLOption alloc]init]; //POI的uid detailShareUrlSearchOption.uid = @"ba97895c02a6ddc7f60e775f";
let detailShareUrlSearchOption = BMKPoiDetailShareURLOption() //POI的uid detailShareUrlSearchOption.uid = "ba97895c02a6ddc7f60e775f"
5发起poi详情短串分享检索
Objective-C
Swift
BOOL flag = [shareurlSearch requestPoiDetailShareURL:detailShareUrlSearchOption]; if(flag) { NSLog(@"POI详情短串分享URL获取成功"); } else { NSLog(@"POI详情短串分享URL获取失败"); }
/** 获取poi详情短串分享url,异步方法, 返回结果在BMKShareUrlSearchDelegate的onGetPoiDetailShareURLResult里 poiDetailShareUrlSearchOption poi详情短串分享检索信息类 成功返回YES,否则返回NO */ let flag = shareurlSearch.requestPoiDetailShareURL(detailShareUrlSearchOption) if flag { print("POI详情短串分享URL获取成功") } else { print("POI详情短串分享URL获取失败") }
6实现Delegate处理回调结果
Objective-C
Swift
#pragma mark - BMKShareURLSearchDelegate /** 返回POI详情分享url @param searcher 检索对象 @param result 检索结果:url @param error 错误码 */ - (void)onGetPoiDetailShareURLResult:(BMKShareURLSearch *)searcher result:(BMKShareURLResult *)result errorCode:(BMKSearchErrorCode)error { if (error == BMK_SEARCH_NO_ERROR) { NSLog(@"POI详情分享检索成功,URL为:%@",result.url); } else { NSLog(@"POI详情分享检索失败"); } }
/** 返回POI详情分享url @param searcher 检索对象 @param result 检索结果:url @param error 错误码 */ func onGetPoiDetailShareURLResult(_ searcher: BMKShareURLSearch!, result: BMKShareURLResult!, errorCode error: BMKSearchErrorCode) { if let _ = result.url { let message = String(format: "分享的POI短串为:%@", result.url) print(message) } }
驾车/公交/骑行/步行路线规划分享
开发者可将公交/驾车/骑行/步行规划路线以短串的形式分享给其他用户。以下以公交路线规划分享为例来介绍实现步骤。
实现步骤
1引入头文件
Objective-C
Swift
#import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h>
// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加 #import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h>
2初始化BMKShareURLSearch的实例
Objective-C
Swift
BMKShareURLSearch *shareurlSearch = [[BMKShareURLSearch alloc] init];
let shareurlSearch = BMKShareURLSearch()
3设置shareurlSearch的代理
Objective-C
Swift
shareurlSearch.delegate = self;
shareurlSearch.delegate = self
4初始化请求参数类BMKRoutePlanShareURLOption
Objective-C
Swift
BMKRoutePlanShareURLOption *option = [[BMKRoutePlanShareURLOption alloc] init]; /** BMK_ROUTE_PLAN_SHARE_URL_TYPE_DRIVE:驾车路线规划短串分享 BMK_ROUTE_PLAN_SHARE_URL_TYPE_WALK:步行路线规划短串分享 BMK_ROUTE_PLAN_SHARE_URL_TYPE_RIDE:骑行路线规划短串分享 BMK_ROUTE_PLAN_SHARE_URL_TYPE_TRANSIT:公交路线规划短串分享 **/ option.routePlanType = BMK_ROUTE_PLAN_SHARE_URL_TYPE_DRIVE; //起终点通过关键字指定时,必须指定 option.cityID = 131; //分享的是第几条线路 option.routeIndex = 0; //初始化BMKPlanNode的实例,线路检索起点 BMKPlanNode *start = [[BMKPlanNode alloc] init]; //名称 start.name = @"百度大厦"; //城市ID start.cityID = 131; //起点,可通过关键字、坐标两种方式指定,使用关键字时必须指定from.cityID option.from = start; //初始化BMKPlanNode的实例,线路检索终点 BMKPlanNode *end = [[BMKPlanNode alloc] init]; //名称 end.name = @"天安门"; //城市ID end.cityID = 131; //终点,可通过关键字、坐标两种方式指定,使用关键字时必须指定to.cityID option.to = end;
let option = BMKRoutePlanShareURLOption() /** BMK_ROUTE_PLAN_SHARE_URL_TYPE_DRIVE:驾车路线规划短串分享 BMK_ROUTE_PLAN_SHARE_URL_TYPE_WALK:步行路线规划短串分享 BMK_ROUTE_PLAN_SHARE_URL_TYPE_RIDE:骑行路线规划短串分享 BMK_ROUTE_PLAN_SHARE_URL_TYPE_TRANSIT:公交路线规划短串分享 **/ option.routePlanType = BMK_ROUTE_PLAN_SHARE_URL_TYPE_DRIVE; //起终点通过关键字指定时,必须指定 option.cityID = 131 //分享的是第几条线路 option.routeIndex = 0 //初始化BMKPlanNode的实例,线路检索起点 let start = BMKPlanNode() //名称 start.name = "百度大厦" //城市ID start.cityID = 131 //起点,可通过关键字、坐标两种方式指定,使用关键字时必须指定from.cityID option.from = start //初始化BMKPlanNode的实例,线路检索终点 let end = BMKPlanNode() //名称 end.name = "天安门" //城市ID end.cityID = 131 //终点,可通过关键字、坐标两种方式指定,使用关键字时必须指定to.cityID option.to = end;
5发起路线规划分享检索
Objective-C
Swift
BOOL flag = [shareurlSearch requestRoutePlanShareURL:option]; if (flag) { NSLog(@"路线规划短串分享URL获取成功"); } else { NSLog(@"路线规划短串分享URL获取失败"); }
/** 获取路线规划短串分享url,异步方法, 返回结果在BMKShareUrlSearchDelegate的onGetRoutePlanShareURLResult里 routePlanShareUrlSearchOption 取路线规划短串分享检索信息类 成功返回YES,否则返回NO */ let flag = shareurlSearch.requestRoutePlanShareURL(option) if flag { NSLog("路线规划短串分享URL获取成功") } else { NSLog("路线规划短串分享URL获取失败") }
6实现Delegate处理回调结果
Objective-C
Swift
#pragma mark - BMKShareURLSearchDelegate /** 返回路线规划分享url @param searcher 检索对象 @param result 检索结果:url @param error 错误码 */ - (void)onGetRoutePlanShareURLResult:(BMKShareURLSearch *)searcher result:(BMKShareURLResult *)result errorCode:(BMKSearchErrorCode)error { if (error == BMK_SEARCH_NO_ERROR) { NSLog(@"路线规划分享检索成功,URL为:%@",result.url); } else { NSLog(@"路线规划分享检索失败"); } }
/** 返回路线规划分享url @param searcher 检索对象 @param result 检索结果:url @param error 错误码 */ func onGetRoutePlanShareURLResult(_ searcher: BMKShareURLSearch!, result: BMKShareURLResult!, errorCode error: BMKSearchErrorCode) { if let _ = result.url { let message = String(format: "分享的POI短串为:%@", result.url) print(message) } }