<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">El 22 de octubre de 2015, 9:35, Tomás Cabezudo <span dir="ltr">&lt;<a href="mailto:tcabezudo@gmail.com" target="_blank">tcabezudo@gmail.com</a>&gt;</span> escribió:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><p class="MsoNormal">Buenos días, </p>

<p class="MsoNormal">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.</p>

<p class="MsoNormal">He probado varios caminos, pero ninguno con éxito.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">//aqui compongo el simbolo</p>

<p class="MsoNormal">private ISymbol getSymbolMunicipios(){</p>

<p class="MsoNormal">                        SymbologyManager
sm = SymbologyLocator.getSymbologyManager();</p>

<p class="MsoNormal">                        </p>

<p class="MsoNormal">                        Color
color = new Color(206,242,213);</p>

<p class="MsoNormal">                        </p>

<p class="MsoNormal">        ISimpleFillSymbol resp =
sm.createSimpleFillSymbol();</p>

<p class="MsoNormal">        resp.setFillColor(color);  
     </p>

<p class="MsoNormal">        resp.setOutline(null);  
     </p>

<p class="MsoNormal">        </p>

<p class="MsoNormal">        return resp;</p>

<p class="MsoNormal">}</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">//aqui intento pintarlo Utilizando el mapcontroldrawer:</p>

<p class="MsoNormal">MapControl mapCtrl =
((DefaultViewPanel)vista).getMapControl();</p>

<p class="MsoNormal">MapControlDrawer mapControlDrawer =
mapCtrl.getMapControlDrawer();</p>

<p class="MsoNormal">mapControlDrawer.draw(geomFeature, simbolo, feature);</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">//Utilizando el graphics2d:</p>

<p class="MsoNormal">Graphics2D g =  (mapCtrl.getImage()).createGraphics();                                        </p>

<p class="MsoNormal">simbolo.draw(g, g.getTransform(), geomFeature, feature,
null);</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Ninguno de los caminos parece el correcto.</p>

<p class="MsoNormal"> </p></div></blockquote><div><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&lt;0 ) {<br>            symid = gl.addSymbol(symbolMunicipios);<br>        }<br>        gl.addGraphic(&quot;miGrupo&quot;, 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, &quot;miGrupo&quot; 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(&quot;miGrupo&quot;);<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 &quot;SingleSymbolLegend&quot; 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> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">

<p class="MsoNormal">Cualquier orientación será bienvenida, gracias</p>

<p class="MsoNormal">Saludos</p></div>
<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 de baja en esta lista, acuda a la siguiente dirección: <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></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">--------------------------------------<br>Joaquin Jose del Cerro Murciano<br>Development and software arquitecture manager at gvSIG Team<br><a href="mailto:jjdelcerro@gvsig.com" target="_blank">jjdelcerro@gvsig.com</a><br><a href="mailto:jjdelcerro@gvsig.org" target="_blank">jjdelcerro@gvsig.org</a><br>gvSIG Association<br><a href="http://www.gvsig.com" target="_blank">www.gvsig.com</a><br><a href="http://www.gvsig.org" target="_blank">www.gvsig.org</a></div>
</div></div>