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

Joaquin Jose del Cerro Murciano jjdelcerro en gvsig.org
Jue Oct 22 14:26:16 CEST 2015


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

> 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?
>
>
No me habia dado cuenta nunca, pero efectivamente, cuando se inserta
una vista en el mapa no se copia el graphicsLayer. Probablemente estaria
bien ver de meter algun check que indique que quieres mantener sincronizado
el graphicsLayer de la vista.

Supongo que tendra algun problema de persistencia.
Como el graphicsLayer vive en memoria y es muy cambiante dudo que
al guardar el proyecto y recuperarlo este ahi de nuevo y probablemente
por eso no se incluyo en el layout.

No tengo muy claro como solucionarlo, aunque dejo aqui algunas
ideas que no termino de ver como encajarlas sin mas contexto de
que hace la aplicacion.

- Es posible copiar el graphicsLayer de la vista en el mapa.
  Lo que no se es cuando tendrias que hacerlo.

- Puedes acceder al MapContext de la vista del layout e insertar
  en el los graficos.

Y pasando ha hacer algo completamente distinto, en lugar de usar
el GraphicsLayer  tambien podrias ver de generar alguna capa (shp)
con las geometrias que quieras y insertarla en la vista con una leyenda
especifica (tal vez una de catagorias). Eso seguro que se ve en el mapa.

He probado ha hacer un script de forma rapida para probar el primer
caso y parece que funcionaria. Te dejo aqui el script por si ir
por esa linea te sirbe de algo. Es facilmente pasable a java.

Ya cuentas por donde tiras.

Un saludo
Joaquin

#--------------><----------------><--------------

# ==========================================================
#
# Declara como que el plugin de scripting puede importar modulos
# de otro plugin de gvSIG.
#
# Por ejemplo, tras ejecutar:
#
#   use_plugin("org.gvsig.app.document.layout2.app.mainplugin")
#
# Ya podriamos importar modulos del plugin de Mapas (documento mapa)
#

def use_plugin(pluginName):
  from org.gvsig.andami import PluginsLocator

  pluginsManager = PluginsLocator.getManager()
  other = pluginsManager.getPlugin(pluginName)
  scripting = pluginsManager.getPlugin("org.gvsig.scripting.app.extension")
  scripting.addDependencyWithPlugin(other)

#
# ==========================================================
#
use_plugin("org.gvsig.app.document.layout2.app.mainplugin")

from gvsig_2_0_0 import *
from org.gvsig.app.project.documents.layout import DefaultLayoutManager

def main(*args):

  view = currentView()
  viewMapContext = view.getMapContext()

  # Obtenemos el objeto que se corresponde con el proyecto.
  proyecto = currentProject()() # Ojo con los dobles perentesis

  # Localizamos el mapa de nombre "prueba" de entre los documentos del
proyecto
  mapa = proyecto.getDocument("prueba",DefaultLayoutManager.TYPENAME )

  context = mapa.getLayoutContext()

  # Nos recorremos todos los elementos del mapa buscando la vista
  for elemento in  context.getAllFFrames():
    if "FFrameView" in elemento.__class__.__name__:
      mapContext = elemento.getMapContext()
      mapContext.setGraphicsLayer(viewMapContext.getGraphicsLayer())
      mapContext.invalidate()

  context.fullRefresh()

#--------------><----------------><--------------



>
>
> Gracias, un saludo
>
>
-- 
--------------------------------------
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óxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151022/2fbfef31/attachment.htm 


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