位置更新之间的动画GPS点功能

时间:2019-04-08 21:41:49

标签: openlayers

我想平滑地描述位置更新之间GPS标记点功能的转换。我以“自定义动画”为例:https://openlayers.org/en/latest/examples/feature-animation.html,并为几何图形而不是样式赋予了动画。

效果很好。唯一的问题:“原始” GPS标记位置功能在动画过程中仍然可见。因此,当动画运行时,我有两个标记:一个在旧位置,一个在动画到新位置... 我尝试在动画之前将原始GPS标记的不透明度设置为0,但是我怀疑图像在后期合成时已经“合成”了。

这是我所做的:

        function flash(feature) {
            var start = new Date().getTime();
            if ((oldGPSGeometry === undefined) || (feature.getGeometry() === undefined))
                return;
            var oldCoordinates = oldGPSGeometry.getFirstCoordinate();
            var newCoordinates = feature.getGeometry().getFirstCoordinate();
            if ((oldCoordinates[0] == newCoordinates[0]) && (oldCoordinates[1] == newCoordinates[1]))
                return;
            var featureStyle = feature.getStyle().clone();
            var listenerKey = map.on('postcompose', animate);

            function animate(event) {
                var vectorContext = event.vectorContext;
                var frameState = event.frameState;
                var elapsed = frameState.time - start;
                var elapsedRatio = elapsed / animationDuration;
                var curCoor = [elapsedRatio * (newCoordinates[0] - oldCoordinates[0]) + oldCoordinates[0], elapsedRatio * (newCoordinates[1] - oldCoordinates[1]) + oldCoordinates[1]];
                var flashGeom = new ol.geom.Point(curCoor);
                vectorContext.setStyle(featureStyle);
                vectorContext.drawGeometry(flashGeom);
                if (elapsed > animationDuration) {
                    ol.Observable.unByKey(listenerKey);
                    return;
                }
                map.render();
            }
        }

我想在动画过程中“隐藏”原始GPS点特征。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用OpenLayers示例可以在开始时设置空样式,并在完成时重置原始样式

"com.sun.org.apache.xalan.internal.processor.TransformerFactoryImpl"