Openlayer3 - 避免折线在动画过程中消失

Openlayer3 - Avoid polyline from disappearing during animation

我在 Flask 应用程序中有一个 openlayer3 实现。

我正在展示一艘帆船的动画,并实现了一个功能来跟随船的路线。但是,如果我放大这艘船,如果在船开始航行时它不在视线范围内,则该船航行的多段线将消失。有谁知道如何解决这个问题?

我创建了这个 jsfiddle 来说明问题。单击 follow ship 检查按钮并放大,这样就不会显示整条折线。启动动画并观看多段线随着船的航行而消失。

我研究过使用 renderBuffer,但在我的例子中,我有一条由 190.000 个数据点组成的巨大折线,而且我不知道这样一条线的像素大小。

var vectorLayer1 = new ol.layer.Vector({
    source: new ol.source.Vector({
        features: [routeFeature1, geoMarker1, startMarker1, endMarker1],
        renderBuffer: 10000000
    }),
    style: function(feature) {
        // hide geoMarker if animation is active
        if (animating1 && feature.get('type') === 'geoMarker') {
            return null;
        }
        return styles1[feature.get('type')];
    }
});

但这并不能解决我的问题。

我正在使用下面的线跟随船的路线,我想知道我是否可以 "redraw" 这条线在每一次移动中:

map1.getView().setCenter(routeCoords1[index]);

问题似乎出在这一行:map1.beforeRender(pan); 如果不调用 beforeRender,问题就不会出现。请注意 ol.Map#beforeRender 以及 ol.animation#pan.

已弃用