[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