zhongrj
2023-06-27 d74b495736f0c04522ec54274b70fed0ded2878d
public/map/core/utils/RendererUtil.js
New file
@@ -0,0 +1,183 @@
define([
"esri/symbols/SimpleFillSymbol",
"esri/Color",
"esri/renderers/SimpleRenderer",
"esri/symbols/SimpleMarkerSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/symbols/PictureMarkerSymbol"
        ],
   function(SimpleFillSymbol,
         Color,
         SimpleRenderer,
         SimpleMarkerSymbol,
         SimpleLineSymbol,
         PictureMarkerSymbol){
    var privateValue = 0;
    return {
       createRenderer:function(rendererConfig){
      var renderer = null;
      if(rendererConfig != undefined && rendererConfig != null && rendererConfig != "default")
      {
         switch(rendererConfig.type)
         {
            case "SimpleRenderer":
               var symbol = this.createSymbol(rendererConfig.symbol);
               renderer = new SimpleRenderer(symbol);
               break;
         }
      }
      return renderer;
       },
      createSymbol:function(symbolConfig)
      {
         var symbol = null;
         switch(symbolConfig.type)
         {
            case "SimpleMarkerSymbol":
               symbol = this.createSimpleMarkerSymbol(symbolConfig);
               break;
            case "PictureMarkerSymbol":
               symbol = this.createPictureMarkerSymbol(symbolConfig);
               break;
            case "SimpleLineSymbol":
               symbol = this.createLineSymbol(symbolConfig);
               break;
            case "SimpleFillSymbol":
               symbol = this.creatFillSymbol(symbolConfig);
               break;
         }
         return symbol;
      },
      creatFillSymbol:function(symbolConfig)
      {
         var style;
         var symbol=null;
         var lineSymbol = this.createLineSymbol(symbolConfig.outline);
         switch(symbolConfig.style)
         {
            case "solid":
               style = SimpleFillSymbol.STYLE_SOLID;
               break;
            case "null":
               style = SimpleFillSymbol.STYLE_NULL;
               break;
            case "cross":
               style = SimpleFillSymbol.STYLE_CROSS;
               break;
            case "diagonal_cross":
               style = SimpleFillSymbol.STYLE_DIAGONAL_CROSS;
               break;
            case "backward_diagonal":
               style = SimpleFillSymbol.STYLE_BACKWARD_DIAGONAL;
               break;
            case "forward_diagonal":
               style = SimpleFillSymbol.STYLE_FORWARD_DIAGONAL;
               break;
            case "horizontal":
               style = SimpleFillSymbol.STYLE_HORIZONTAL;
               break;
            case "vertical":
               style = SimpleFillSymbol.STYLE_VERTICAL;
               break;
         }
         var color = new Color(symbolConfig.color);
         color.a=symbolConfig.alpha;
         symbol = new SimpleFillSymbol(style, lineSymbol,color);
         return symbol;
      },
      createSimpleMarkerSymbol:function(symbolConfig)
      {
         var style;
         var symbol = null;
         var lineSymbol = this.createLineSymbol(symbolConfig.outline);
         switch(symbolConfig.style)
         {
            case "circle":
               style = SimpleMarkerSymbol.STYLE_CIRCLE;
               break;
            case "cross":
               style = SimpleMarkerSymbol.STYLE_CROSS;
               break;
            case "diamond":
               style = SimpleMarkerSymbol.STYLE_DIAMOND;
               break;
            case "path":
               style = SimpleMarkerSymbol.STYLE_PATH;
               break;
            case "square":
               style = SimpleMarkerSymbol.STYLE_SQUARE;
               break;
            case "STYLE_X":
               style = SimpleMarkerSymbol.STYLE_X;
               break;
            default:
               style = SimpleMarkerSymbol.STYLE_CIRCLE;
               break;
         }
         symbol = new SimpleMarkerSymbol(style,symbolConfig.size,lineSymbol,new Color(symbolConfig.color));
         return symbol;
      },
      createLineSymbol:function(config)
      {
         var symbol=null;
         if(config != undefined && config != null)
         {
            switch(config.type)
            {
               case "SimpleLineSymbol":
                  var style = this.parseLineStyle(config.style);
                  symbol = new SimpleLineSymbol(style,
                        new Color(config.color),
                        config.width);
                  break;
            }
         }
         return symbol;
      },
      parseLineStyle:function(style)
      {
         var returnStyle;
         switch(style)
         {
            case "solid":
               returnStyle = SimpleLineSymbol.STYLE_SOLID;
               break;
            case "dashdot":
               returnStyle = SimpleLineSymbol.STYLE_DASHDOT;
               break;
            case "dashdotdot":
               returnStyle = SimpleLineSymbol.STYLE_DASHDOT;
               break;
            case "dot":
               returnStyle = SimpleLineSymbol.STYLE_DOT;
               break;
            case "longdash":
               returnStyle = SimpleLineSymbol.STYLE_LONGDASH;
               break;
            case "longdashdot":
               returnStyle = SimpleLineSymbol.STYLE_LONGDASHDOT;
               break;
            case "null":
               returnStyle = SimpleLineSymbol.STYLE_NULL;
               break;
            case "shortdash":
               returnStyle = SimpleLineSymbol.STYLE_SHORTDASH;
               break;
            case "shortdashdot":
               returnStyle = SimpleLineSymbol.STYLE_SHORTDASHDOT;
               break;
            default:
               returnStyle = SimpleLineSymbol.STYLE_SOLID;
            break;
         }
         return returnStyle;
      },
      createPictureMarkerSymbol:function(config)
      {
         var symbol = new PictureMarkerSymbol(config.url, config.width, config.height);
         symbol.xoffset=config.xoffset;
         symbol.yoffset=config.yoffset;
         return symbol;
      }
    };
});