[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