[Gvsig_desarrolladores] problema con setScaleView

Manuel de la Calle Alonso mdelacalle en gmail.com
Mar Oct 2 10:12:39 CEST 2007


Gracias Fran, funciona perfectamete,

He implementado el LayerDrawingListener en mi extensión, se lo he añadido al
mapContext y
en el evento lo que hago después de actualizar la escala es quitar el evento
del mapContext como
me decías.

Muchas Gracias!!, duda solucionada.

saludos

On 10/2/07, Francisco José Peñarrubia <fpenarru en gmail.com> wrote:
>
> Hola Manuel.
>
> Yo probaría el camino de los listeners:
>
> - Crea un listener que haga lo que tu quieres y luego se borre de la
> colección de listeners.
>
> Si quieres hacer algo cuando el mapcontrol esté visible, crea un
> ComponentListener.
> Si quieres hacer algo cuando el mapcontext termine de dibujarse, o antes
> de que empiece a dibujarse, pero con el viewPort ya calculado (con
> imageSize correcto), crea un listener que implemente
> LayerDrawingListener
> y añádelo al mapContext con el método addLayerDrawingListener.
>
> Los eventos que saltan son antes de pintar una capa, después de
> pintarla, antes de pintar los gráficos y después de pintar los gráficos.
> Antes de pintar la primera capa, fijas tu nuevo extent y debería
> funcionar. Para los que han usado MapObjects, les sonará el sistema.
>
> Saludos.
>
> Fran.
>
>
> Manuel de la Calle Alonso escribió:
> > Muchas gracias por la ayuda!!!
> > Si no me equivoco ese código es el de la extensión centerToPoint,
> > ¿no?, de hecho uso ese método primero y luego intento seleccionar un
> > escala por tanto lo que necesito es que
> > pasando una escala se actualize el extent, vamos en concreto necesito
> > el método setScaleView(long scale).
> > Otra idea sería calcular el extent a partir de la escala y luego
> > actualizarlo de la manera que hace este método que me has mandado, pero
> > he visto que setScaleView para hacer eso necesita el tamaño de la
> > imagen del viewport y en el momento que yo intento
> > actualizar la escala eso es nulo, por eso no me funciona el
> > setScaleView, supongo que eso deja de ser nulo cuando se ha pintado
> > completamente la imagen, ¿Puedo saber cuando es ese momento?. ¿Hay
> > algún método por ahí que calcule la escala a partir de un extent?
> >
> > Un saludo y muchas gracias de nuevo.
> >
> >
> >
> > On 10/2/07, *Vicente Caballero Navarro* <vicente.caballero en iver.es
> > <mailto:vicente.caballero en iver.es>> wrote:
> >
> >     Hola Manuel.
> >
> >     Te paso un trozo de código con el que puedes centrar la vista en
> >     un determinado punto y mantener el extent, a partir de esto puedes
> >     probar a cambiar el extent como quieras:
> >
> >     *private void zoomToCoordinates(Point2D center) throws Exception {
> >            try{
> >             Rectangle2D oldExtent =
> >     mapControl.getViewPort().getAdjustedExtent();
> >             double oldCenterX = oldExtent.getCenterX();
> >             double oldCenterY = oldExtent.getCenterY();
> >
> >             double movX = center.getX()-oldCenterX;
> >             double movY = center.getY()-oldCenterY;
> >             double upperLeftCornerX = oldExtent.getMinX()+movX;
> >             double upperLeftCornerY = oldExtent.getMinY()+movY;
> >             double width = oldExtent.getWidth();
> >             double height = oldExtent.getHeight();
> >             Rectangle2D extent = new
> >     Rectangle2D.Double(upperLeftCornerX, upperLeftCornerY, width,
> height);
> >             mapControl.getViewPort().setExtent(extent);
> >            }catch (NumberFormatException e) {
> >                throw new Exception();
> >            }
> >
> >         }*
> >
> >
> >
> >     Manuel de la Calle Alonso escribió:
> >>     Hola buenas, tengo un problemita haciendo unas cosas en un plugin
> >>     y no sé muy bien como hacer, os cuento.
> >>     El plugin abre un proyecto, luego lo centra en un punto y después
> >>     debe ponerlo en la escala adecuada. En el método
> >>     execute del plugin hago:
> >>
> >>
> >>     execute() {
> >>     //LEO PROPIEDADES
> >>
> >>     //ABRO EL PROYECTO
> >>
> >>     //CENTRO EN UN PUNTO
> >>
> >>     //PONGO LA ESCALA ADECUADA PARA OBTENER UN EXTENT
> >>     .....
> >>     MapContext mapa = mapControl.getMapContext ();
> >>     mapa.setScaleView(escala);
> >>     .....
> >>     }
> >>
> >>     Al hacer eso, he visto que no se refresca la escala, parece ser
> >>     que porque en el método setScaleView si es nulo el
> >>     tamaño de la imagen, parece que no se refresca
> >>
> >>     viewPort.getImageSize()
> >>
> >>     ¿En qué momento deja de ser nulo el ImageSIze del viewport?
> >>     ¿Cómo puedo saber cuando se ha terminado de pintar para poder
> >>     hacer el setScaleView?
> >>     ¿Hay alguna forma alternativa de poner el mapa en la escala?
> >>
> >>     Un saludo y muchas gracias por la ayuda
> >>
> >>
> ------------------------------------------------------------------------
> >>
> >>     _______________________________________________
> >>     gvSIG_desarrolladores mailing list
> >>     gvSIG_desarrolladores en runas.cap.gva.es
> >>      <mailto:gvSIG_desarrolladores en runas.cap.gva.es>
> >>     http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >>
> >     Un saludo.
> >
> >     --
> >     Vicente Caballero Navarro
> >     Grupo desarrollo gvSIG.
> >     IVER TI S.A.
> >     C/ Lérida, 20
> >     46005-Valencia
> >     Tlf.+34963354983
> >
> >     www.iver.es <http://www.iver.es>
> >     www.gvsig.com <http://www.gvsig.com>
> >
> >
> >     Este mensaje y sus archivos son confidenciales. No está permitida
> >     su reproducción o distribución sin la autorización expresa de
> >     "IVER Tecnologías de la Información". Si usted no es el
> >     destinatario previsto, queda desautorizado cualquier uso, acceso o
> >     copia de este mensaje. Si ha recibido este mensaje por error, por
> >     favor bórrelo e infórmenos por esta misma vía.
> >
> >     _______________________________________________
> >     gvSIG_desarrolladores mailing list
> >     gvSIG_desarrolladores en runas.cap.gva.es
> >     <mailto:gvSIG_desarrolladores en runas.cap.gva.es>
> >     http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > gvSIG_desarrolladores mailing list
> > gvSIG_desarrolladores en runas.cap.gva.es
> > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20071002/ccb80609/attachment.htm


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