[Gvsig_desarrolladores] Resumen de gvSIG_desarrolladores, Vol 130, Envío 8

Tomás Cabezudo tcabezudo en gmail.com
Jue Oct 22 12:39:17 CEST 2015


Muchas Gracias por la explicación.
He probado de la 1ª forma que me indicabas, registrando mis propios
símbolos y ha funcionado perfectamente.

Gracias de nuevo, un saludo

El 22 de octubre de 2015, 12:00, <
gvsig_desarrolladores-request en listserv.gva.es> escribió:

> Envie los mensajes para la lista gvSIG_desarrolladores a
>         gvsig_desarrolladores en listserv.gva.es
>
> Para subscribirse o anular su subscripción a través de WEB
>
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
> O por correo electrónico, enviando un mensaje con el texto "help" en
> el asunto (subject) o en el cuerpo a:
>         gvsig_desarrolladores-request en listserv.gva.es
>
> Puede contactar con el responsable de la lista escribiendo a:
>         gvsig_desarrolladores-owner en listserv.gva.es
>
> Si responde a algún contenido de este mensaje, por favor, edite la
> linea del asunto (subject) para que el texto sea mas especifico que:
> "Re: Contents of gvSIG_desarrolladores digest...". Ademas, por favor,
> incluya en la respuesta solo aquellas partes del mensaje a las que
> esta respondiendo.
>
>
> Asuntos del día:
>
>    1. Ayuda en el dibujado de símbolos sobre la vista. (Tomás Cabezudo)
>    2. Re: Ayuda en el dibujado de símbolos sobre la vista.
>       (Joaquin Jose del Cerro Murciano)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 22 Oct 2015 09:35:35 +0200
> From: Tomás Cabezudo <tcabezudo en gmail.com>
> Subject: [Gvsig_desarrolladores] Ayuda en el dibujado de símbolos
>         sobre la vista.
> To: gvsig_desarrolladores en listserv.gva.es
> Message-ID:
>         <
> CAObipL7eT_wwMXMRe0sODe_k883ZCdiOCekr1AODh7ak_HjdUA en mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Buenos días,
>
> estoy intentando pintar un símbolo(un ISimpleFillSymbol sencillo) sobre una
> feature en la vista y no lo consigo, a ver si alguien puede echar una mano.
>
> He probado varios caminos, pero ninguno con éxito.
>
>
>
> //aqui compongo el simbolo
>
> private ISymbol getSymbolMunicipios(){
>
>                         SymbologyManager sm =
> SymbologyLocator.getSymbologyManager();
>
>
>
>                         Color color = new Color(206,242,213);
>
>
>
>         ISimpleFillSymbol resp = sm.createSimpleFillSymbol();
>
>         resp.setFillColor(color);
>
>         resp.setOutline(null);
>
>
>
>         return resp;
>
> }
>
>
>
>
>
> //aqui intento pintarlo Utilizando el mapcontroldrawer:
>
> MapControl mapCtrl = ((DefaultViewPanel)vista).getMapControl();
>
> MapControlDrawer mapControlDrawer = mapCtrl.getMapControlDrawer();
>
> mapControlDrawer.draw(geomFeature, simbolo, feature);
>
>
>
> //Utilizando el graphics2d:
>
> Graphics2D g =  (mapCtrl.getImage()).createGraphics();
>
>
> simbolo.draw(g, g.getTransform(), geomFeature, feature, null);
>
>
>
> Ninguno de los caminos parece el correcto.
>
>
>
> Cualquier orientación será bienvenida, gracias
>
> Saludos
> ------------ pr?a parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL:
> http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151022/c2be5349/attachment-0001.htm
>
> ------------------------------
>
> Message: 2
> Date: Thu, 22 Oct 2015 11:00:56 +0200
> From: Joaquin Jose del Cerro Murciano <jjdelcerro en gvsig.org>
> Subject: Re: [Gvsig_desarrolladores] Ayuda en el dibujado de símbolos
>         sobre la vista.
> To: Lista de Desarrolladores de gvSIG
>         <gvsig_desarrolladores en listserv.gva.es>
> Message-ID:
>         <CABLUYi123P+zgynx60jPeTZmX=
> b7tbisPvEcr5JOiG-gZMUDbQ en mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> El 22 de octubre de 2015, 9:35, Tomás Cabezudo <tcabezudo en gmail.com>
> escribió:
>
> > Buenos días,
> >
> > estoy intentando pintar un símbolo(un ISimpleFillSymbol sencillo) sobre
> > una feature en la vista y no lo consigo, a ver si alguien puede echar una
> > mano.
> >
> > He probado varios caminos, pero ninguno con éxito.
> >
> >
> >
> > //aqui compongo el simbolo
> >
> > private ISymbol getSymbolMunicipios(){
> >
> >                         SymbologyManager sm =
> > SymbologyLocator.getSymbologyManager();
> >
> >
> >
> >                         Color color = new Color(206,242,213);
> >
> >
> >
> >         ISimpleFillSymbol resp = sm.createSimpleFillSymbol();
> >
> >         resp.setFillColor(color);
> >
> >         resp.setOutline(null);
> >
> >
> >
> >         return resp;
> >
> > }
> >
> >
> >
> >
> >
> > //aqui intento pintarlo Utilizando el mapcontroldrawer:
> >
> > MapControl mapCtrl = ((DefaultViewPanel)vista).getMapControl();
> >
> > MapControlDrawer mapControlDrawer = mapCtrl.getMapControlDrawer();
> >
> > mapControlDrawer.draw(geomFeature, simbolo, feature);
> >
> >
> >
> > //Utilizando el graphics2d:
> >
> > Graphics2D g =  (mapCtrl.getImage()).createGraphics();
> >
> >
> > simbolo.draw(g, g.getTransform(), geomFeature, feature, null);
> >
> >
> >
> > Ninguno de los caminos parece el correcto.
> >
> >
> >
>
>
> Hola Tomás,
> me temo que lo que quieres hacer no se puede.
> El pintado de la simbologia se encarga de hacerlo la
> leyenda de forma automatica al hacer un draw de la capa.
> No puedes forzar el pintado de una solo geometria.
> Depende de lo que quieras tienes varias opciones, pero
> necesitaria algo mas de descripcion de lo que quieres hacer
> para orientarte mejor.
>
> La opcion mas rapida si lo que quieres es pintar una geometria,
> o unas pocas, sobre la vista con una simbologia en concreto es
> usar el GraphicsLayer. Se trata de una capa virtual que se
> pinta sobre todas las demas y en la que puedes insertar geometrias
> con una simbologia en concreto y se pintaran sobre todas las
> capas. Un pedacito de codigo...
>
>         MapContext mapContext = ...;
>         Geometry theGeom = ...;
>
>         GraphicLayer gl = mapContext.getGraphicsLayer();
>
>         ISymbol symbolMunicipios = getSymbolMunicipios();
>
>         int symid = gl.getSymbolId(symbolMunicipios);
>         if( symid<0 ) {
>             symid = gl.addSymbol(symbolMunicipios);
>         }
>         gl.addGraphic("miGrupo", theGeom, symid);
>
>         mapContext.invalidate();
>
> No lo he probado pero la idea seria algo asi.
>
> - Al mapContext le pedimos su GraphicsLayer.
>
> - En el hay que registrar el simbolo o simbolos que
>   vamos a usar con addSymbol.
>
> - Tenemos que tener la precaucion de no registrar
>   simbolos como locos, si ya lo hemos registrado
>   no lo volvemos a registrar.
>   Para eso, utilizaremos la funcion getSymbolId para
>   consultar si ya hemos registrado ese simbolo y solo
>   lo registraremos si no lo habiamos registrado antes.
>   Ojo, que esto solo funciona si utilizamos la misma
>   instanancia de simbolo. Si la funcion getSymbolMunicipios
>   nos devuelve una instanancia distinta cada vez que se
>   llama esto no ira.
>
> - Añadiremos al GraphicsLayer la geometria indicandole que
>   use el identificador del simbolo que hemos añadido.
>   Ademas usaremos un identificador, "miGrupo" en el codigo
>   que he picado, que identifique mi funcionalidad.
>   Hay que tener en cuenta que el GraphicsLayer se usa
>   en varias herramientas y cuando queremos borrar nuestros
>   graficos de el, deberemos borrar solo los nuestros usando
>
>   gl.removeGraphics("miGrupo");
>
>   Para no borrar los de las demas herramientas que puedan
>   haber insertado graficos en el.
>
> - Por ultimo forzamos un refresco del mapa.
>
> Ademas tendras que determinar cuando quieres eliminar los
> datos que has introducido en el GraphicsLayer.
>
> Otra opcion...
> Puedes crear tu propia leyenda que es la que se encarga de
> pintar las geometrias y asignarla a la capa. Asi sin pensarlo
> mucho, podrias extender de "SingleSymbolLegend" y sobreescribir
> el metodo:
>
>   public ISymbol getSymbolByFeature(Feature feat)
>
> para que en caso de que sea la feature que requieres un
> pintado especial retorne el simbolo que toque, y para el
> resto de casos llame al super.
>
> La cosa se puede complicar un poco mas si en lugar de
> usar una leyenda de simbolo unico quieres usar otra,
> mas que nada por su inicializacion, pero la idea seria
> la misma.
>
> Espero que te sirva algo de lo que cuento, y lo dicho,
> si me cuantas algo mas te puedo orientar mejor.
>
> Espero que cuentes por donde tiras y nos digas como te va.
>
> Un saludo
> Joaquin
>
>
>
>
> > Cualquier orientación será bienvenida, gracias
> >
> > Saludos
> >
> > _______________________________________________
> > gvSIG_desarrolladores mailing list
> > gvSIG_desarrolladores en listserv.gva.es
> > Para ver histórico de mensajes, editar sus preferencias de usuario o
> darse
> > de baja en esta lista, acuda a la siguiente dirección:
> > http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
> >
> >
>
>
> --
> --------------------------------------
> Joaquin Jose del Cerro Murciano
> Development and software arquitecture manager at gvSIG Team
> jjdelcerro en gvsig.com
> jjdelcerro en gvsig.org
> gvSIG Association
> www.gvsig.com
> www.gvsig.org
> ------------ pr?a parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL:
> http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151022/932081f7/attachment-0001.htm
>
> ------------------------------
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
>
> Fin de Resumen de gvSIG_desarrolladores, Vol 130, Envío 8
> *********************************************************
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151022/cdeb887b/attachment.htm 


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