【问题标题】:How to drawing animated openlayers linestring path?如何绘制动画开放层线串路径?
【发布时间】:2015-11-04 19:01:07
【问题描述】:

我使用 openlaers 地图 api。我想在我的路径中显示动画路线,例如http://jerusalem.com/map#!/tour/the_way_of_the_cross/location/abu_jaafar。怎么做?谢谢。

这是我的 Java Script,我从 XML 文件中获取数据。

<script type="text/javascript">                          
                var zoom=13

        var map; //complex object of type OpenLayers.Map

        function init() {
            map = new OpenLayers.Map ("map", {
                controls:[
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.LayerSwitcher(),
                    new OpenLayers.Control.Attribution()],
                maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
                maxResolution: 156543.0399,
                numZoomLevels: 19,
                units: 'm',
                projection: new OpenLayers.Projection("EPSG:900913"),
                displayProjection: new OpenLayers.Projection("EPSG:4326")
            } );

            // Define the map layer
            // Here we use a predefined layer that will be kept up to date with URL changes
            layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
            map.addLayer(layerMapnik);
            layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
            map.addLayer(layerCycleMap);
            layerMarkers = new OpenLayers.Layer.Markers("Markers");
            map.addLayer(layerMarkers);

        //   Add the Layer with the GPX Track
            var lgpx = new OpenLayers.Layer.Vector("Descrizione del layer", {
                strategies: [new OpenLayers.Strategy.Fixed()],
                protocol: new OpenLayers.Protocol.HTTP({
                    url: "c.php",
                    format: new OpenLayers.Format.GPX()
                }),
                style: {strokeColor: "blue", strokeWidth: 5, strokeOpacity: 0.5},

            projection: new OpenLayers.Projection("EPSG:4326")

            });



            map.addLayer(lgpx);

        }

    </script>

【问题讨论】:

    标签: javascript xml openlayers gpx


    【解决方案1】:

    Drawing animated openlayers linestring path 尝试答案。好像挺像的。

    这是答案的重要部分:

    function drawAnimatedLine(startPt, endPt, style, steps, time, fn) {
        var directionX = (endPt.x - startPt.x) / steps;
        var directionY = (endPt.y - startPt.y) / steps;
        var i = 0;
        var prevLayer;
        var ivlDraw = setInterval(function () {
            if (i > steps) {
                clearInterval(ivlDraw);
                if (fn) fn();
                return;
            }
            var newEndPt = new OpenLayers.Geometry.Point(startPt.x + i * directionX, startPt.y + i * directionY);
            var line = new OpenLayers.Geometry.LineString([startPt, newEndPt]);
            var fea = new OpenLayers.Feature.Vector(line, {}, style);
            var vec = new OpenLayers.Layer.Vector();
            vec.addFeatures([fea]);
            map.addLayer(vec);
            if(prevLayer) map.removeLayer(prevLayer);
            prevLayer = vec;
            i++;
        }, time / steps);
    }
    

    time 参数指定您希望动画持续多长时间 (以毫秒为单位),steps 指定您想要多少步 将动画分为。 fn 是一个将被执行的回调 动画完成后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多