首页 / deck.gl / API 文档
LinearInterpolator
先看结论
线性过渡插值器。经纬度、缩放、俯仰、方位角同时按比例变化, 是 deck.gl 的默认插值方式。
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)。