[Gvsig_desarrolladores] Problemas creando una leyenda por valores unicos

raisel rcastellanos en habana.geocuba.cu
Jue Dic 2 18:19:08 CET 2010


Hola a todos

Estoy tratando de crear una leyenda por valores únicos para una capa, pero
no lo he logrado.
Al ejecutar mi método se crea la lista de valores con los colores asignados
a la izquierda de la vista, pero la capa se torna completamente de color
azul aqua.

Aqui les dejo el codigo utilizado por si desean darle un vistazo;

Gracias de antemano por cualquier ayuda

Saludos, Raisel

////////////////////

int k;
        String filterName="tipo";
        SelectableDataSource ds;
        int value;
        int campo;

    	FLyrVect capa =
(FLyrVect)mapCtrl.getMapContext().getLayers().getLayer("Suelos");
    	
        try {
              ds = capa.getRecordset();
              campo = ds.getFieldIndexByName(filterName); //Los tipos de
suelos pueden ser X, XI, XV....

           FSymbol myDefaultSymbol;
         // Creamos el primer y último color.
          Color startColor = new Color(89, 35, 20);
          Color endColor = new Color(90, 78, 200);
        
          VectorialUniqueValueLegend legend = null;
          legend =
LegendFactory.createVectorialUniqueValueLegend(FShape.POLYGON);
         
          Vector valoresClave=new Vector();
          StringValue []values = new StringValue[3];

          values[0] = (StringValue)ds.getFieldValue(17, campo);
          values[1] = (StringValue)ds.getFieldValue(18, campo);
          values[2] = (StringValue)ds.getFieldValue(19, campo);
          
          int r;
          int g; 
          int b;
          int stepR;
          int stepG;
          int stepB;

          r = startColor.getRed();
          g = startColor.getGreen();
          b = startColor.getBlue();
          stepR = (endColor.getRed() - r) / values.length;
          stepG = (endColor.getGreen() - g) / values.length;
          stepB = (endColor.getBlue() - b) / values.length;
          legend.clear();
          legend.useDefaultSymbol(true); 

          for (k = 0; k < values.length; k++) 
          {
              Color c = new Color(r, g, b);
            //si no esta creado el simbolo se crea
              myDefaultSymbol = new FSymbol(FShape.POLYGON);
              myDefaultSymbol.setColor(c);
              myDefaultSymbol.setDescription(values[k].toString());
              myDefaultSymbol.setSize(3);
              myDefaultSymbol.setSizeInPixels(true);
           
              r = r + stepR;
              g = g + stepG;
              b = b + stepB;
              
              legend.addSymbol(values[k], myDefaultSymbol);
          }

          capa.setLegend(legend);

        } catch (LegendLayerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ReadDriverException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
-- 
View this message in context: http://osgeo-org.1803224.n2.nabble.com/Problemas-creando-una-leyenda-por-valores-unicos-tp5796805p5796805.html
Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.


Más información sobre la lista de distribución gvSIG_desarrolladores