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

Tomás Cabezudo tcabezudo en gmail.com
Jue Oct 22 13:18:04 CEST 2015


Una pequeña observación:

mi objetivo es marcar ciertos municipios sobre la vista, para lo cual
vuestro código ha funcionado perfectamente.

El siguiente paso es que esa vista la quiero llevar a un mapa como un
'marco de vista', ahí ya no veo esos municipios 'marcados' .

Entiendo que al ser una capa virtual sobre la que dibuja los gráficos, no
se puede llevar sobre el marco de vista del mapa ¿es cierto esa suposición?

¿Habría alguna manera de poder verlo sobre el mapa?



Gracias, un saludo

El 22 de octubre de 2015, 12:39, Tomás Cabezudo <tcabezudo en gmail.com>
escribió:

> 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/06a1299a/attachment.htm 


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