首页 / deck.gl / 使用示例
弧线飞线
以北京、上海为起点连接十座城市,弧高与线宽由客流决定, 两端颜色从蓝渐变到橙,透明度缓慢脉动。
源码与运行效果
说明
十二条航线共覆盖十二座城市,客流值从 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,交叉的弧线才不会挤在一起。
流向配色要克制。蓝到橙的渐变已经表达方向, 再去改线宽或弧高容易造成双重编码。若必须同时表达量级, 让颜色只管方向、宽度只管数量,读图时才有确定的解释顺序。