声明属性后更新CZML属性

时间:2017-08-22 17:44:02

标签: cesium czml

我正在尝试从先前在czml文件中声明的数据包更新某些属性(即“semiMinorAxis”和“semiMajorAxis”)。

我尝试这样做的方法是覆盖“semiMinorAxis”和“semiMajorAxis”的值。

即:在12:00:00和13:00:00之间,ellipse_1的大小为300000,在13:00:00到14:00:00之间,大小为600000。

以下是我在一个简单的csml中尝试这样做的方法:

[
        {
        "id" : "document",
        "name" : "name",
        "version" : "1.0",
        "clock":
                {
                "interval": "2010-02-04T12:00:00Z/2010-02-04T14:00:00Z",
                "currentTime": "2010-02-04T12:00:00Z",
                        "multiplier": 100
                }
        },


        // I create ellipse_1
        {
        "id" : "ellipse_1",
        "name" : "ellipse_1 (61.0666922, -107.9917071)",
        "availability" : "2010-02-04T12:00:00Z/2010-02-04T13:00:00ZZ",
        "position" : {
                "cartographicDegrees" : [-107.9917071,61.0666922, 0.0]
        },
        "ellipse" : {
                "semiMinorAxis" : 300000,
                "semiMajorAxis" : 300000,
                "height" : 0.0,
                "material" : {
                        "solidColor" : {
                                "color" : {
                                        "rgba" :[151,20,150, 255]
                                }
                        }
                }
        }
},

        // I reuse the id and only change the values that I want the change
        {
        "id" : "ellipse_1"
        },
        "ellipse" : {
                "interval" : "2010-02-04T13:00:00Z/2010-02-04T14:00:00ZZ",
                "semiMinorAxis" : 600000,
                "semiMajorAxis" : 600000
        }
}
]

另一种选择似乎是这样做的:

{
    "id" : "ellipse_1",
    "name" : "ellipse_1 (61.0666922, -107.9917071)",
    "availability" : "2010-02-04T12:00:00.00Z/2010-02-04T14:00:00.00Z",
    "position" : {
        "cartographicDegrees" : [-137.9917071,51.0666922, 0.0]
    },
    "ellipse" : [
    {
        "interval" : "2010-02-04T12:00:00.00Z/2010-02-04T13:00:00.00Z",
        "semiMinorAxis" : 300000,
        "semiMajorAxis" : 300000,
        "height" : 200000.0,
        "material" : {
            "solidColor" : {
                "color" : {
                    "rgba" :[253,152,38, 255]
                }
            }
        }
    },
    {
            "interval" : "2010-02-04T13:00:00.00Z/2010-02-04T14:00:00.00Z",
            "semiMinorAxis" : 600000,
            "semiMajorAxis" : 600000,
            "height" : 200000.0,
            "material" : {
                "solidColor" : {
                    "color" : {
                        "rgba" :[253,152,38, 255]
                    }
                }
            }
        }
    ]
}

顺便说一下,这是查看它的脚本:

<script>
    var viewer = new Cesium.Viewer('cesiumContainer', {
    imageryProvider : new Cesium.ArcGisMapServerImageryProvider({url : 'http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer'
    }),
    baseLayerPicker : false,
    animation : true,
    timeline : true,
    });

    var dataSourcePromise = Cesium.CzmlDataSource.load('../Apps/oscar.czml');
    viewer.dataSources.add(dataSourcePromise);    
    viewer.flyTo(dataSourcePromise).then(function(result){
    });
</script>

不幸的是,这些显然不是更新csml文件中对象值的方法。我错过了一些明显的东西吗?

谢谢!

0 个答案:

没有答案