Herramientas Personales
Usted está aquí: Inicio Desarrollo Manual para desarrolladores gvSIG v1.1 GVSIG Vistas View MapControl
Acciones de Documento

MapControl

por Grupo gvSIGÚltima modificación 01/06/2010 22:52

En muchísimas extensiones, lo primero que se hace es obtener el objeto View, y a partir de éste, obtener el MapControl y el MapContext asociados. Es un punto de entrada típico. Con el MapContext, ya tenemos la lista de capas (FLayers), buscar la capa con la que queremos trabajar, etc. Veamos un ejemplo:

com.iver.andami.ui.mdiManager.IWindow view = PluginServices.getMDIManager().getActiveWindow();
if (!(view instanceof View))
    return;
View vista=(View)view;
IProjectView model = vista.getModel();
MapContext mapa = model.getMapContext();
MapControl mapCtrl = vista.getMapControl();
logger.debug("Comand : " + s);

if (s.equals("FULL") ) {
    try {
        // mapa.beginAtomicEvent();
        mapa.getViewPort().setExtent(mapa.getLayers().getFullExtent());
        mapa.clearAllCachingImageDrawnLayers();
        vista.repaintMap();
        // mapa.endAtomicEvent();
    } catch (DriverException e) {
        NotificationManager.addError("Error obteniendo el full extent",
            e);
    }
} 

Este trozo de código lo hemos sacado de la clase com.iver.cit.gvsig.ViewControls. Lo que hace es usar PluginServices.getActiveWindow() para obtener la ventana activa. Si esa ventana es de tipo View, entonces obtiene el MapContext para fijar mostrar un zoom a todas las capas:

mapa.getViewPort().setExtent(mapa.getLayers().getFullExtent());

Las clases más interesantes a revisar para ver ejemplos de este tipo son:

  • ViewControls.- Son muchos comandos en una sola clase: Zoom a todas las capas, cambiar encuadre, configurar el localizador, zoom in, zoom out, medir, poner todas las capas visibles, invisibles, activas, inactivas, salvar a raster, cambiar la escala....
  • ViewSelectionControls.- Seleccionar por punto, por rectángulo, por polígono, por forma genérica e invertir la selección.

Unos ejemplos sencillos: ZoomPrev y ZoomToSelectExtension. Sirven para hacer un zoom previo y para hacer un zoom a los elementos seleccionados de una capa, respectivamente.

Otras extensiones interesantes que puedes revisar y que tienen que ver con el trabajo sobre vistas:

  • Export.- Exporta a una capa raster lo que se ve en la vista.
  • AddLayer.- Sirve para que el usuario añada las capas a la vista. Es más compleja de lo que parece, ya que muestra un cuadro de diálogo extensible desde plugins externos, y de hecho se usa por otros plugins para añadir capas basadas en bases de datos espaciales, WMS, WFS, etc. En esta clase, solo se añade lo necesario para cargar capas basadas en ficheros (.shp, raster, .dxf, .dgn, etc). También es interesante que te fijes en el tratamiento de la proyección asociada a una capa y la que está asociada a la vista. Si no coinciden, se intentará reproyectar al vuelo.
  • InfoToolExtension.- La ventana de mostrar información es mucho más compleja de lo que parece (quizá innecesariamente compleja, hay que reconocerlo). Esta clase es únicamente el punto de entrada para averiguar su funcionamiento.

Dentro de las vistas, resulta interesante ver la relación entre el MapOverview y el MapControl. Lo veremos en el siguiente punto.


Hecho con Plone CMS, el Sistema de Gestión de Contenidos de Fuentes Abiertos

Este sitio cumple con los siguientes estándares: