经纬志
首页 / deck.gl / API 文档

LinearInterpolator

先看结论

线性过渡插值器。经纬度、缩放、俯仰、方位角同时按比例变化, 是 deck.gl 的默认插值方式。

最后验证 2026-11-03 · deck.gl 9.0 · 更新 2026-10-29 · 引用本文
new deck.LinearInterpolator()

方法

方法返回说明
getDuration(startViewState, endViewState)Number继承自基类,线性插值本身不计算时长
interpolateProps(startViewState, endViewState, t)Object按进度 t(0 到 1)返回中间视角

示例

// 默认行为:不传 transitionInterpolator 时即为线性插值
deckgl.setProps({
  viewState: {
    longitude: 121.473,
    latitude: 31.230,
    zoom: 12,
    pitch: 0,
    bearing: 0,
    transitionDuration: 800
  }
});

// 显式指定,便于与自定义插值器区分
deckgl.setProps({
  viewState: {
    longitude: 116.391,
    latitude: 39.907,
    zoom: 10,
    pitch: 30,
    bearing: 15,
    transitionDuration: 600,
    transitionInterpolator: new deck.LinearInterpolator()
  }
});

时长必须写数字

LinearInterpolator 不实现距离到时间的换算, transitionDuration 只能写成毫秒数。 写成 'auto' 时得不到有效时长,过渡会立即结束。 需要按距离自动调速时改用 FlyToInterpolator。

线性不代表等速

经纬度是线性变化的,但屏幕上的位移感受并不均匀: 缩放层级同时变化时,高缩放下的移动看起来更快。 跨越多个层级的长距离切换会显得前段缓慢、后段急促, 这是选择线性插值需要接受的代价。

局部微调最合适

同一城市内平移几百米、俯仰角小幅调整,线性插值观感最自然, 也没有飞行曲线的多余缩放。配合较短的时长(300 到 600 毫秒), 交互反馈干脆。

过渡中的图层不可变。deck.gl 9 的图层实例不可变, 动画过程中重建图层会让画面闪烁。需要同步更新数据时, 等过渡结束再 clone 并 deckgl.setProps。

引用本文

经纬志(2026)。《LinearInterpolator》。https://www.jingweizhi.com/deckgl/api/linear-interpolator.html(访问日期 2026-11-03)。