FlyToInterpolator
飞行过渡插值器。在视角切换时先拉远、再飞向目标、最后拉近, 长距离跳转不再是一闪而过的直线移动。
构造参数
| 参数 | 默认 | 说明 |
|---|---|---|
speed | 1.2 | 飞行速度倍率,越大越快 |
curve | 1.414 | 路径弯曲程度,1.414 约等于 sqrt(2),再大则弧线更高 |
方法
| 方法 | 返回 | 说明 |
|---|---|---|
getDuration(startViewState, endViewState) | Number | 按起止视角估算飞行时长,毫秒 |
interpolateProps(startViewState, endViewState, t) | Object | 给定进度 t(0 到 1)返回中间视角 |
示例
function flyTo(lng, lat, zoom) {
deckgl.setProps({
viewState: {
longitude: lng,
latitude: lat,
zoom: zoom,
pitch: 45,
bearing: -20,
transitionDuration: 'auto',
transitionInterpolator: new deck.FlyToInterpolator({ speed: 1.6 })
}
});
}
flyTo(121.473, 31.230, 13);
时长由谁决定
transitionDuration 必须写成 'auto',
deck.gl 才会调用 getDuration 估算时长。
写成固定毫秒数时,飞行路径仍然会弯曲,但速度与距离无关,
远近切换的观感不一致。
飞行起点显示的是当前视角,终点是 viewState 里的经纬度、缩放、
俯仰与方位角。只给其中一部分字段时,其余字段沿用当前值,
容易得到意料之外的角度,建议一次写全。
与 LinearInterpolator 的选择
FlyToInterpolator 适合跨城市、跨区域的定位跳转;
同一区域内的小幅平移用 LinearInterpolator
更直接,也不会产生额外的缩放曲线。
过渡中再次触发
飞行未结束时再次调用 setProps,deck.gl 会从当前中间视角
重新计算到新目标,不会跳回起点。连续点击多个目标时,
可以先用 transitionInterruption 控制打断策略。
飞行期间图层不要重建。过渡过程中频繁 clone 图层会打断
动画并造成数据闪烁。先把视角切过去,等 onTransitionEnd
之后再换数据。
经纬志(2026)。《FlyToInterpolator》。https://www.jingweizhi.com/deckgl/api/fly-to-interpolator.html(访问日期 2026-11-03)。