【问题标题】:Openlayer3 - Avoid polyline from disappearing during animationOpenlayer3 - 避免折线在动画期间消失
【发布时间】:2017-01-12 12:39:53
【问题描述】:

我在 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]);

【问题讨论】:

  • 有趣的问题。看起来动画比重新绘制地图图层具有更高的优先级,因为如果您等待帆船完成它的旅程,那么不可见的线部分将完成绘制并出现..不知道如何解决这个问题

标签: javascript jquery html flask openlayers-3


【解决方案1】:

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

【讨论】:

  • 非常感谢。这似乎解决了我的问题!
猜你喜欢
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
  • 2017-06-17
  • 2015-06-15
  • 2013-05-16
相关资源
最近更新 更多