Skip to content

公交线路

调用方法

transitRoute(option)

option

名称类型说明
startlnglat起始经纬度
endlnglat终点经纬度
policynumber公交导航的策略参数,默认1,可选:1最少时间,2少换乘,4少步行,8不坐地铁
successfunction调用成功回调
failfunction调用失败回调

示例代码

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

文档版本 v1.0.1