经纬志
首页 / deck.gl / 使用示例

弧线飞线

以北京、上海为起点连接十座城市,弧高与线宽由客流决定, 两端颜色从蓝渐变到橙,透明度缓慢脉动。

deck.gl 9.0 · 更新 2026-10-27
源码与运行效果
运行效果

说明

十二条航线共覆盖十二座城市,客流值从 150 到 820。 宽度用 1.8 + v / 220,高度用 0.32 + v / 4500, 两者同向增长但不完全成比例,避免最高与最低相差过大。

配置作用
getSourceColor / getTargetColor两端不同色,路径上自动插值
greatCircle: true沿球面最短路径弯曲,跨经度时不横穿地图
getHeight弧顶相对高度,控制拱形饱满度
widthMinPixels: 1.5低缩放层级下细线不消失
info.index在访问器里按序号错开相位,形成追逐效果
端点散点图层标出城市节点,弧线不会悬空结束

脉动是怎么做的

每 70 毫秒重建一次图层,闭包变量 phase 递增 0.22, 颜色访问器用 sin(phase + index * 0.7) 计算 alpha。 重建带来的开销在这里可以忽略:只有十二条弧线,且数据引用不变。

换成一千条航线时,这种每帧重建就不合适了。可以只保留一条 「高亮弧线」做脉动,或把相位变化写进 updateTriggers 并在数据更新时统一提交。

正俯视下弧线会消失

俯仰角为 0 时,弧高沿着视线方向,投影后几乎与直线重合。 示例的 pitch: 32 是让弧线成立的必要条件, 再加一点 bearing,交叉的弧线才不会挤在一起。

流向配色要克制。蓝到橙的渐变已经表达方向, 再去改线宽或弧高容易造成双重编码。若必须同时表达量级, 让颜色只管方向、宽度只管数量,读图时才有确定的解释顺序。