[Gvsig_desarrolladores] problema con setScaleView
Francisco José Peñarrubia
fpenarru en gmail.com
Mar Oct 2 09:58:47 CEST 2007
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
>
Más información sobre la lista de distribución gvSIG_desarrolladores