位置短地址分享
概述
短地址分享是指,用户搜索查询后得到的每一个地理位置结果将会对应一条短串(短链接),用户可以通过短信、邮件或第三方分享组件(如微博、微信等)把短串分享给其他用户从而实现地理位置信息的分享。当其他用户收到分享的短串后,点击短串即可打开手机上的百度地图客户端或者手机浏览器进行查看。
短串分享功能支持三种类型的分享:
POI详情分享:分享特定POI的详细信息位置信息分享:分享指定位置的地理坐标和描述信息路线分享:分享路线规划结果,支持驾车、步行、骑行、公交四种出行方式
快速开始
1. 导入依赖
import { ShareUrlSearch, ShareUrlResult, LocationShareURLOption, PoiDetailShareURLOption, RouteShareURLOption, RouteShareMode, PlanNode } from "@bdmap/search"import { LatLng } from "@bdmap/base"
2. 创建实例
// 创建 ShareUrlSearch 实例const shareUrlSearch: ShareUrlSearch = ShareUrlSearch.newInstance()
3. 使用完毕后销毁实例
// 在组件销毁时调用shareUrlSearch.destroy()
接口说明
ShareUrlSearch 类
静态方法
newInstance(): ShareUrlSearch
创建 ShareUrlSearch 实例。
返回值:ShareUrlSearch 实例
示例:
const shareUrlSearch: ShareUrlSearch = ShareUrlSearch.newInstance()
实例方法
requestPoiDetailShareUrl(option: PoiDetailShareURLOption): Promise<ShareUrlResult>
请求POI详情分享URL。
参数:
option: PoiDetailShareURLOption- POI详情分享参数
返回值:Promise - 分享URL结果
示例:
const option: PoiDetailShareURLOption = {uid: "8d96925c6ccf855cc1f1cf38"}const result: ShareUrlResult = await shareUrlSearch.requestPoiDetailShareUrl(option)if (result.error === 0 && result.url !== undefined) {console.log("分享URL:", result.url)}
requestLocationShareUrl(option: LocationShareURLOption): Promise<ShareUrlResult>
请求位置信息分享URL。
参数:
option: LocationShareURLOption- 位置信息分享参数
返回值:Promise - 分享URL结果
示例:
const location: LatLng = new LatLng(39.913922, 116.403461)const option: LocationShareURLOption = {location: location,name: "百度大厦",snippet: "北京市海淀区上地十街10号"}const result: ShareUrlResult = await shareUrlSearch.requestLocationShareUrl(option)if (result.error === 0 && result.url !== undefined) {console.log("分享URL:", result.url)}
requestRouteShareUrl(option: RouteShareURLOption): Promise<ShareUrlResult>
请求路线分享URL。
参数:
option: RouteShareURLOption- 路线分享参数
返回值:Promise - 分享URL结果
示例:
const fromLocation: LatLng = new LatLng(39.913922, 116.403461)const toLocation: LatLng = new LatLng(39.989813, 116.314094)const fromNode: PlanNode = new PlanNode({location: fromLocation,city: "北京市",name: "起点"})const toNode: PlanNode = new PlanNode({location: toLocation,city: "北京市",name: "终点"})const option: RouteShareURLOption = {from: fromNode,to: toNode,pn: 0,cityCode: 131,routeShareMode: RouteShareMode.CAR_ROUTE_SHARE_MODE}const result: ShareUrlResult = await shareUrlSearch.requestRouteShareUrl(option)if (result.error === 0 && result.url !== undefined) {console.log("分享URL:", result.url)}
destroy(): void
销毁 ShareUrlSearch 实例。调用此方法后,实例将无法再使用,所有进行中的请求回调都会被阻止。
示例:
shareUrlSearch.destroy()
参数类型说明
PoiDetailShareURLOption
POI详情分享URL请求参数。
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
uid | string | 是 | 欲分享的POI的uid |
示例:
const option: PoiDetailShareURLOption = {uid: "8d96925c6ccf855cc1f1cf38"}
LocationShareURLOption
位置信息分享URL请求参数。
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
location | LatLng | 是 | 共享点位置 |
name | string | 是 | 共享点名称 |
snippet | string | 是 | 通过短URL调起客户端时作为附加信息显示在名称下面 |
示例:
const location: LatLng = new LatLng(39.913922, 116.403461)const option: LocationShareURLOption = {location: location,name: "百度大厦",snippet: "北京市海淀区上地十街10号"}
RouteShareURLOption
路线检索短串分享的请求参数。
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
from | PlanNode | 是 | 起点 |
to | PlanNode | 是 | 终点 |
pn | number | 是 | 要分享检索路线中的哪条 |
cityCode | number | 是 | 城市ID,公交检索需要传入cityID |
routeShareMode | RouteShareMode | 是 | 路线分享模式 |
示例:
const option: RouteShareURLOption = {from: fromNode,to: toNode,pn: 0,cityCode: 131,routeShareMode: RouteShareMode.CAR_ROUTE_SHARE_MODE}
RouteShareMode 枚举
路线分享模式枚举。
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
CAR_ROUTE_SHARE_MODE = 0 | 驾车短串分享 | ||
FOOT_ROUTE_SHARE_MODE = 1 | 步行短串分享 | ||
CYCLE_ROUTE_SHARE_MODE = 2 | 骑行短串分享 | ||
BUS_ROUTE_SHARE_MODE = 3 | 公交短串分享 |
ShareUrlResult 接口
共享URL结果(短串)。
| 属性 | 类型 | 说明 |
|---|---|---|
error | number | 错误码,0表示成功 |
url | string | 共享URL(可选) |
type | number | url所包含数据的检索类型(可选) |
错误码说明:
0:成功其他值:失败,具体错误码请参考SDK错误码文档
完整示例
示例1:POI详情分享
import { ShareUrlSearch, PoiDetailShareURLOption, ShareUrlResult } from "@bdmap/map"@ComponentV2export struct PoiShareExample {@Local shareUrl: string = ""@Local isLoading: boolean = falseprivate shareUrlSearch: ShareUrlSearch | null = nullaboutToAppear(): void {this.shareUrlSearch = ShareUrlSearch.newInstance()}aboutToDisappear(): void {if (this.shareUrlSearch !== null) {this.shareUrlSearch.destroy()this.shareUrlSearch = null}}private async requestPoiShare(): Promise<void> {if (this.shareUrlSearch === null) {return}this.isLoading = truetry {const option: PoiDetailShareURLOption = {uid: "8d96925c6ccf855cc1f1cf38"}const result: ShareUrlResult = await this.shareUrlSearch.requestPoiDetailShareUrl(option)if (result.error === 0 && result.url !== undefined) {this.shareUrl = result.url} else {const errorCode: number = result.error !== undefined ? result.error : -1console.error(`请求失败,错误码: ${errorCode}`)}} catch (error) {if (error instanceof Error) {const message: string = error.messageconsole.error(`请求异常: ${message}`)} else {const errorStr: string = String(error)console.error(`请求异常: ${errorStr}`)}} finally {this.isLoading = false}}build() {Column() {Button('生成POI分享URL').onClick(() => {this.requestPoiShare()})if (this.shareUrl !== "") {Text(this.shareUrl)}}}}
示例2:位置信息分享
import { ShareUrlSearch, LocationShareURLOption, ShareUrlResult } from "@bdmap/map"import { LatLng } from "@bdmap/map"@ComponentV2export struct LocationShareExample {@Local shareUrl: string = ""private shareUrlSearch: ShareUrlSearch | null = nullaboutToAppear(): void {this.shareUrlSearch = ShareUrlSearch.newInstance()}aboutToDisappear(): void {if (this.shareUrlSearch !== null) {this.shareUrlSearch.destroy()this.shareUrlSearch = null}}private async requestLocationShare(): Promise<void> {if (this.shareUrlSearch === null) {return}try {const location: LatLng = new LatLng(39.913922, 116.403461)const option: LocationShareURLOption = {location: location,name: "百度大厦",snippet: "北京市海淀区上地十街10号"}const result: ShareUrlResult = await this.shareUrlSearch.requestLocationShareUrl(option)if (result.error === 0 && result.url !== undefined) {this.shareUrl = result.url}} catch (error) {if (error instanceof Error) {const message: string = error.messageconsole.error(`请求异常: ${message}`)}}}build() {Column() {Button('生成位置分享URL').onClick(() => {this.requestLocationShare()})if (this.shareUrl !== "") {Text(this.shareUrl)}}}}
示例3:路线分享
import { ShareUrlSearch, RouteShareURLOption, RouteShareMode, PlanNode, ShareUrlResult } from "@bdmap/map"import { LatLng } from "@bdmap/map"@ComponentV2export struct RouteShareExample {@Local shareUrl: string = ""private shareUrlSearch: ShareUrlSearch | null = nullaboutToAppear(): void {this.shareUrlSearch = ShareUrlSearch.newInstance()}aboutToDisappear(): void {if (this.shareUrlSearch !== null) {this.shareUrlSearch.destroy()this.shareUrlSearch = null}}private async requestRouteShare(): Promise<void> {if (this.shareUrlSearch === null) {return}try {const fromLocation: LatLng = new LatLng(39.913922, 116.403461)const toLocation: LatLng = new LatLng(39.989813, 116.314094)const fromNode: PlanNode = new PlanNode({location: fromLocation,city: "北京市",name: "起点"})const toNode: PlanNode = new PlanNode({location: toLocation,city: "北京市",name: "终点"})const option: RouteShareURLOption = {from: fromNode,to: toNode,pn: 0,cityCode: 131,routeShareMode: RouteShareMode.CAR_ROUTE_SHARE_MODE}const result: ShareUrlResult = await this.shareUrlSearch.requestRouteShareUrl(option)if (result.error === 0 && result.url !== undefined) {this.shareUrl = result.url}} catch (error) {if (error instanceof Error) {const message: string = error.messageconsole.error(`请求异常: ${message}`)}}}build() {Column() {Button('生成路线分享URL').onClick(() => {this.requestRouteShare()})if (this.shareUrl !== "") {Text(this.shareUrl)}}}}
上一篇
下一篇
本篇文章对您是否有帮助?