我在Flask应用程序中有一个openlayer3实现。
我正在展示一艘帆船的动画,并且已经实施了一项功能,可以沿着它的路线行驶。但是,如果我在船上放大,那么当船开始航行时,如果船在航行时不在视线范围内航行的折线将消失。有谁知道如何解决这个问题?
我已创建此jsfiddle来说明问题。单击跟随发货检查按钮并放大,以便不显示整个折线。启动动画并观察折线在船舶航行时消失。
我研究过使用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')];
}
});
这并不能解决我的问题。
我正在使用以下行跟随它的路线,我想知道我是否可以在每次移动中“重绘”该行:
map1.getView().setCenter(routeCoords1[index]);
答案 0 :(得分:2)
问题似乎是这一行:map1.beforeRender(pan);
没有调用之前的问题,问题不会出现。请注意,不再使用ol.Map#beforeRender和ol.animation#pan
。