首页 / 浏览问题 / 云GIS / 问题详情
火车监控,用smid作为id和time,代码如下
13EXP 2017年07月19日
function processCompleted(getFeaturesEventArgs){
        var features,result = getFeaturesEventArgs.result;
        if (result && result.features) {
            features = result.features;
        }
        console.log(features);

        //使用数据
        var pointFeatures = [];
        var lines1 = [];
        var lines2 = [];
        var points = [];
        var id = 0;
        for(var i = 0,len = features.length;i<len;i++)
        {
            var point = features[i].geometry;
            var po = features[i].geometry;
            if(id == features[i].data.SmID)
            {
                points.push(po);
            }
            else
            {
                id = features[i].data.SmID;
                lines1.push(
                        new SuperMap.Feature.Vector(
                                new SuperMap.Geometry.LineString(points),
                                {},
                                {
                                    stroke:true,
                                    strokeColor:"#dddddd",
                                    strokeWidth:3,
                                    strokeDashstyle:"solid"

                                }
                        )
                );
                lines2.push(
                        new SuperMap.Feature.Vector(
                                new SuperMap.Geometry.LineString(points),
                                {},
                                {
                                    stroke:true,
                                    strokeColor:"#41403f",
                                    strokeWidth:2,
                                    strokeDashstyle:"dash"
                                }
                        )
                );

                points = [];
            }

                if(features[i].data.SmID <151)
                {
                    var pointFeature = new SuperMap.Feature.Vector(point,{
                        FEATUREID:features[i].data.SmID,
                        TIME:features[i].data.SmID
                    },style1);
                }
                else
                {
                    var pointFeature = new SuperMap.Feature.Vector(point,{
                        FEATUREID:features[i].data.SmID,
                        TIME:features[i].data.SmID
                    },style2);
                }

                pointFeatures.push(pointFeature);
        }
        animatorVector.addFeatures(pointFeatures);
        lineVector1.addFeatures(lines1);
        lineVector2.addFeatures(lines2);

    }

1个回答

您好,是遇到了什么问题吗?
1,603EXP 2017年07月20日
我想问的是,我这样用我的点数据集属性的smid来作为vector的featureID和time效果没出来,不知道哪里用错了,或者是我数据准备错了,我准备的是点数据集,想问一下,为什么效果出不来,代码错在哪里谢谢?那个示例文章教学博客看了很多遍,效果就是试不出来,拜托了谢谢
iClient for JavaScript的动画图层类参考如下:
http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/apidoc/files/SuperMap/Layer/AnimatorVector-js.html#SuperMap.Layer.AnimatorVector.SuperMap.Layer.AnimatorVector
建议先仔细阅读

实现过程大概类似CSS渐变动画,举个例子,如下两个点:
a(0,0) b(10,10)
a要运动到c(-20,-20),b要运动到d(30,30)
那么这时会有两个动画,a到c的动画叫动画1,b到d的叫动画2。

 动画图层的 featureID 属性即指定使用哪个属性标识动画,即哪些属性值的要素在同一个动画,默认是 要素的属性“FEATUREID”,比如,a和c都应该有 “FEATUREID” 属性,并且属性值相同,这样就唯一确定了动画1由a和c两点组成;同样b到d也应有这个属性且值相同。

  再说时间,是用于控制播放过程和播放时间的,具体多少毫秒的播放时间,这里不再解释,参考类参考。
  上面的例子,如果a的标记是0时刻,c是1时刻,那么动画1就是从a的位置每帧加speed时间一直过渡到b的位置,反过来,那么动画1就会从c的位置过渡到a;动画1和动画2可以不同时开始和结束。
  动画图层timeName属性指定标识要素时刻的字段,默认是要素的属性 “TIME”,所以a和c都应有这个属性,并指定值,值为任意数字,没有任何意义,比如开始时间是 100.0 等于a的TIME值,速度是50.0,c的TIME值是200.0,那么下一帧代表的是150.0时刻,,这时动画显示的点大概在a、c两点中间。

所以你不能设置TIME为你的SMID,而且featureID也不能设置为SMID,因为同一个动画的featureID要一致,而且TIME要设置为哪一个时刻
...