产品服务
解决方案
文档与支持
定价
位置短地址分享
下载开发文档
概述

短地址分享是指,用户搜索查询后得到的每一个地理位置结果将会对应一条短串(短链接),用户可以通过短信、邮件或第三方分享组件(如微博、微信等)把短串分享给其他用户从而实现地理位置信息的分享。当其他用户收到分享的短串后,点击短串即可打开手机上的百度地图客户端或者手机浏览器进行查看。

短串分享功能支持三种类型的分享:

  • 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请求参数。

属性类型必填说明
uidstring欲分享的POI的uid

示例:

const option: PoiDetailShareURLOption = {
uid: "8d96925c6ccf855cc1f1cf38"
}

LocationShareURLOption

位置信息分享URL请求参数。

属性类型必填说明
locationLatLng共享点位置
namestring共享点名称
snippetstring通过短URL调起客户端时作为附加信息显示在名称下面

示例:

const location: LatLng = new LatLng(39.913922, 116.403461)
const option: LocationShareURLOption = {
location: location,
name: "百度大厦",
snippet: "北京市海淀区上地十街10号"
}

RouteShareURLOption

路线检索短串分享的请求参数。

属性类型必填说明
fromPlanNode起点
toPlanNode终点
pnnumber要分享检索路线中的哪条
cityCodenumber城市ID,公交检索需要传入cityID
routeShareModeRouteShareMode路线分享模式

示例:

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结果(短串)。

属性类型说明
errornumber错误码,0表示成功
urlstring共享URL(可选)
typenumberurl所包含数据的检索类型(可选)

错误码说明:

  • 0:成功
  • 其他值:失败,具体错误码请参考SDK错误码文档

完整示例

示例1:POI详情分享

import { ShareUrlSearch, PoiDetailShareURLOption, ShareUrlResult } from "@bdmap/map"
@ComponentV2
export struct PoiShareExample {
@Local shareUrl: string = ""
@Local isLoading: boolean = false
private shareUrlSearch: ShareUrlSearch | null = null
aboutToAppear(): 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 = true
try {
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 : -1
console.error(`请求失败,错误码: ${errorCode}`)
}
} catch (error) {
if (error instanceof Error) {
const message: string = error.message
console.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"
@ComponentV2
export struct LocationShareExample {
@Local shareUrl: string = ""
private shareUrlSearch: ShareUrlSearch | null = null
aboutToAppear(): 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.message
console.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"
@ComponentV2
export struct RouteShareExample {
@Local shareUrl: string = ""
private shareUrlSearch: ShareUrlSearch | null = null
aboutToAppear(): 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.message
console.error(`请求异常: ${message}`)
}
}
}
build() {
Column() {
Button('生成路线分享URL')
.onClick(() => {
this.requestRouteShare()
})
if (this.shareUrl !== "") {
Text(this.shareUrl)
}
}
}
}

上一篇

地图收藏夹

下一篇

类参考

本篇文章对您是否有帮助?