sinat_26662021 2016-05-31 02:45 采纳率: 50%
浏览 2685
已结题

arcgis for javascript 地图色带渲染的问题

大家好,我初学arcgis for javascript,目前在做项目的过程中,有一个主要的功能一直没有很好解决,网上也找不到有效的方法,来此求助,希望懂的大神能给予指导,如能解决,非常感谢,以下是我碰到的困难:

需求:目前有一个featureLayer,它是一条河,被等分成了150块,现在需要根据客户端计算得到的流速参数来用色带渲染这条河。即每一块都要根据该块的流速数据上色,同时整体要有渐变的效果。(流速高处用红色,低处用蓝色)

我的解决方法:我找到连续的颜色涂覆方法只有SimpleRenderer,以下是程序的主要部分但是没有成功(渲染结果是根据原本的position属性的值来的,而不是动态的流速的值):

                graphicdrawEvent = on(featureLayer, "graphic-draw", function (evt) {     //在featurelayer加载每一块svg的时候把流速赋值给地图fields中的一个属性,这里赋值给position                        
                    var flow=simulationData.liusu;   //该块处的流速值                    
                    evt.graphic.attributes.position=flow;  //把流速值赋给featurelayer该块处的position属性
                  });            

            var renderer = new SimpleRenderer(new SimpleFillSymbol().setOutline(new SimpleLineSymbol().setWidth(0.1).setColor(new Color([128,128,128]))));
            renderer.setColorInfo({
              field: "position",         //针对position属性的值来赋上色带
              minDataValue: 5,
              maxDataValue: 19,
              colors: [
                new Color([255, 0, 0]),
                new Color([0, 255, 68]),
              ]
            });
            featureLayer.setRenderer(renderer);
            featureLayer.show();

我猜测的原因:是不是地图的field是地图本身的属性,所以arcgis for javascript无法有效更改其中的属性值?
求助:
1、api中SimpleRenderer貌似只能针对某个field来渲染,请问有无用arcgis for javascript动态更改fields中某个属性值的方法?
2、或者要实现这个功能的话除了用SimpleRenderer来渲染featurelayer,还有没有别的方法(比如有无别的种类的layer更适合做这个渲染)?

  • 写回答

1条回答

  • 普通网友 2016-10-07 16:39
    关注

    望懂的大神能给予指导,如能解决,非常感谢,以下是我碰到的困难:
    需求:目前有一个featureLayer,它是一条河,被等分成了150块,现在需要根据客户端计算得到的流速参数来用色带渲染这条河。即每一块都要根据该块的流速数据上色,同时整体要有渐变的效果。(流速高处用红色,低处用蓝色)
    我的解决方法:我找到连续的颜色涂覆方法只有SimpleRenderer,以下是程序的主要部分但是没有成功(渲染结果是根据原本的position属性的值来的,而不是动态的流速的值):
    graphicdrawEvent = on(featureLayer, "graphic-draw", function (evt) { //在featurelayer加载每一块svg的时候把流速赋值给地图fields中的一个属性,这里赋值给position

    var flow=simulationData.liusu; //该块处的流速值

    evt.graphic.attributes.position=flow; //把流速值赋给featurelayer该块处的position属性
    });

            var renderer = new SimpleRenderer(new SimpleFillSymbol().setOutline(new SimpleLineSymbol().setWidth(0.1).setColor(new Color([128,128,128]))));
            renderer.setColorInfo({
              field: "position",         //针对position属性的值来赋上色带
              minDataValue: 5,
              maxDataValue: 19,
              colors: [
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器