Appearance
公交线路
调用方法
transitRoute(option)
option
名称 | 类型 | 说明 |
---|---|---|
start | lnglat | 起始经纬度 |
end | lnglat | 终点经纬度 |
policy | number | 公交导航的策略参数,默认1,可选:1最少时间,2少换乘,4少步行,8不坐地铁 |
success | function | 调用成功回调 |
fail | function | 调用失败回调 |
示例代码
javascript
const markerList = [
{
title:'起点',
lnglat: [106,19]
},
{
title:'终点',
lnglat: [107,20]
}
]
const getLine = () => {
TDTRenderRef.value
.transitRoute({
policy: 1,
start: markerList[0].lnglat,
end: markerList[1].lnglat
})
.then((res) => {
console.log('公交线路', res);
createRoute(res.data[0].lines);
})
.catch((err) => {
console.log('err', err);
})
.finally(() => {
uni.hideLoading();
});
};
//显示公交换乘图标
const createMarker = (lines: any[]) => {
let list: any = [...markerList];
for (let i = 0; i < lines.length; i++) {
const item = lines[i];
const lnglatStartStr = item.stationStart.lonlat;
const lnglatEndStr = item.stationEnd.lonlat;
let iconUrl = '';
if (item.segmentType == 2) {
//公交
//公交标注
iconUrl = map_bus;
} else if (item.segmentType == 3) {
//地铁
//地铁标注
iconUrl = map_metro;
} //地铁站内换乘
else {
//地铁标注
iconUrl = map_metro;
}
if (item.segmentType != 1) {
list.push({
lnglat: lnglatStartStr,
options: {
icon: {
iconUrl: iconUrl,
iconSize: [23, 23],
iconAnchor: [12, 12]
}
}
});
list.push({
lnglat: lnglatEndStr,
options: {
icon: {
iconUrl: iconUrl,
iconSize: [23, 23],
iconAnchor: [12, 12]
}
}
});
}
}
TDTRenderRef.value
.addMarkers({
list: list
})
.finally(() => {
uni.hideLoading();
});
};
//公交线路绘制
const createRoute = (lines: any[]) => {
createMarker(lines);
let list: any = [];
for (let i = 0; i < lines.length; i++) {
const item = lines[i];
//去掉经纬度字符串最后一个分号,并存储在一个数据中。
let points = item.segmentLine[0].linePoint;
//存储经纬度的数组
let lnglatArr = [];
for (let i = 0; i < points.length; i++) {
lnglatArr.push(points[i]);
}
let lineColor = '#E6A23C'; //线的颜色
let lineStyle = 'dashed'; //线的样式
//步行
if (item.segmentType == 1) {
lineColor = '#E6A23C'; //线的颜色
lineStyle = 'dashed'; //线的样式
} else if (item.segmentType == 2) {
//公交
lineColor = '#409EFF'; //线的颜色
lineStyle = 'solid'; //线的样式
} else if (item.segmentType == 3) {
//地铁
lineColor = '#67C23A'; //线的颜色
lineStyle = 'solid'; //线的样式
} else {
//地铁站内换乘
lineColor = '#67C23A'; //线的颜色
lineStyle = 'dashed'; //线的样式
}
list.push({
points: lnglatArr,
options: {
color: lineColor,
lineStyle: lineStyle,
opacity: 1,
weight: 5
}
});
}
TDTRenderRef.value
.addLines({
list: list
})
.finally(() => {
uni.hideLoading();
});
};
贡献者
mosowe