Re: [Gvsig_desarrolladores] Comparación de dos vistas
David Fernández Martínez
fmdavid en gmail.com
Mar Ago 21 11:49:53 CEST 2007
Muchas gracias.
Empezaré a probar siguiendo tus indicaciones.
El día 21/08/07, jaume domínguez faus <jaume.dominguez en iver.es> escribió:
>
> Hola David,
>
> puedes, por ejemplo, tener tus dos vistas y crear una herramienta que te
> devuelva el rectángulo que define el nuevo zoom
>
> Puedes tomar como ejemplo la herramienta de zoom ya existente. Este
> pedazo de código está en View.java (libFMap) y es el que instala la
> herramienta en el mapcontro de la vista. Algo así debe de aparecer, por
> ejemplo, en el execute() de la extensión que responde al botón en la
> barra de herramientas.
>
> ZoomInListener zil = new ZoomInListener(m_MapControl);
> m_MapControl.addMapTool("zoomIn", new Behavior[]{new
> RectangleBehavior(zil),
> new PointBehavior(zoil), new
> MouseMovementBehavior(sbl)});
>
> Así a bote pronto, diría que únicamente necesitas crearte tu propio
> ZoomInListenerImpl que añada un par de líneas a ZoomInListenerImpl en su
> método rectangle(RectangleEvent) para que en vez de afectar únicamente a
> una vista, afecte a las dos tuyas e instalarla en ambos MapControl de
> ambas View (vistas).
>
> /*
> * @see
> com.iver.cit.gvsig.fmap.tools.Listeners.RectangleListener#rectangle(
> com.iver.cit.gvsig.fmap.tools.Events.RectangleEvent)
> */
> public void rectangle(RectangleEvent event) {
> Rectangle2D rect = event.getWorldCoordRect();
> Rectangle2D pixelRect = event.getPixelCoordRect();
> Rectangle2D.Double r = new Rectangle2D.Double();
>
> ViewPort vp = mapCtrl.getMapContext().getViewPort();
>
> ********************************************* NUEVA LÍNEA
> // aquí obtienes la referencia al otro viewport de la otra vista
> ViewPort vp2 <- TU OTRO VIEWPORT
> *********************************************
> if ((pixelRect.getWidth() < 3) && (pixelRect.getHeight() < 3))
> {
> if (vp.getExtent()!=null){
> double factor = 1/MapContext.ZOOMINFACTOR;
> double nuevoX = rect.getMaxX() -
> ((vp.getExtent().getWidth() * factor) / 2.0);
> double nuevoY = rect.getMaxY() -
> ((vp.getExtent().getHeight() * factor) / 2.0);
> r.x = nuevoX;
> r.y = nuevoY;
> r.width = vp.getExtent().getWidth() * factor;
> r.height = vp.getExtent().getHeight() * factor;
> vp.setExtent(r);
> ********************************************* NUEVA LÍNEA
> vp2.setExtent(r);
> *********************************************
> }
> }
> else
> {
> vp.setExtent(event.getWorldCoordRect());
> ********************************************* NUEVA LÍNEA
> vp2.setExtent(event.getWorldCoordRect());
> *********************************************
> }
> mapCtrl.getMapContext().clearAllCachingImageDrawnLayers();
> // mapCtrl.drawMap(false);
> }
>
>
> La referencia a los correspondientes viewports la puedes pasar en el
> constructor de tu herramienta, (por ejemplo).
>
> Esto sería para el zoom-in, faltaría algo similar para desplazamiento y
> para zoom-out, pero como ves, es muy sencillo y rápido de implementar.
>
> Salut!
>
> David Fernández Martínez wrote:
> > Hola a todos
> >
> > Queríamos desarrollar para gvSIG una funcionalidad que permitiera
> > visualizar dos vistas diferentes (o simplemente dos rasters
> > diferentes) de forma que si en una realizo un desplazamiento o un zoom
> > también se realice esta operación sobre la otra. La clave es que las
> > dos vistas representen la misma zona geográfica. Sería algo parecido
> > al comportamiento que tiene el localizador, pero que en ambas se
> > visualice exactamente el mismo espacio geográfico.
> >
> > Habíamos pensado como posibilidad desarrollar una extensión que,
> > teniendo previamente las dos vistas abiertas, vinculara de alguna
> > forma la posición de una respecto de la otra.
> >
> > ¿Alguien podría orientarme en cómo efectuar esta vinculación? ¿Se
> > podría hacer de otra forma?
> >
> > Muchas gracias
> >
> > --
> > ----------------------------------------
> > David Fernández Martínez
> > fmdavid en gmail.com <mailto:fmdavid en gmail.com>
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > gvSIG_desarrolladores mailing list
> > gvSIG_desarrolladores en runas.cap.gva.es
> > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >
>
>
> --
> Jaume Dominguez Faus
>
>
> Àrea de Software Lliure
> Equip gvSIG
> Iver TI
> C. Salamanca, 52
> 46005 València
> Telf: 902 25 25 40 Fax: 96 316 27 16
> (Spain)
>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
--
----------------------------------------
David Fernández Martínez
fmdavid en gmail.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20070821/74b0c8eb/attachment-0001.htm
Más información sobre la lista de distribución gvSIG_desarrolladores