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