[Gvsig_desarrolladores] Duda sobre método nuevo al reemplazar el Deprecated

Joaquin Jose del Cerro Murciano jjdelcerro en gvsig.org
Jue Ene 5 20:42:37 CET 2017


El 5 de enero de 2017, 17:27, Iago Alonso Alonso <ialonso en enxenio.es>
escribió:

> Hola, revisando código he visto en una clase un método donde se usa una
> función marcada como Deprecated. En concreto es:
>
> *public DynObjectSet getInfo(java.awt.Point p, double tolerance,
> Cancellable cancel) throws LoadLayerException, DataException;*
>
> De la interfaz InfoByPoint. En el javadoc pone que se uitilice ésta en su
> lugar:
>
> *public DynObjectSet getInfo(Point p, double tolerance) throws
> LoadLayerException, DataException;*
>
> En este caso se usa org.gvsig.fmap.geom.primitive.Point
>
> El problema surge cuando en el método que utiliza la función *getInfo*
> Deprecated la cambio por la nueva. La funcionalidad del plugin ya no
> funciona, no se abre la ventana con la información del elemento pulsado.
>
> El código original se usa primero:
>
> (java.awt.Point)* Point imagePoint = new Point((int)
> event.getPoint().getX(), (int) event.getPoint().getY());*
>
> y después más adelante:
>
> *DynObjectSet bit = ((VectorLayer) laCapa).getInfo(imagePoint,*
> *     mapCtrl.getMapContext().getViewPort().toMapDistance(3), new
> Cancellable() {*
> *          public boolean isCanceled() {*
> *               return false;*
> *          }*
>
> *          public void setCanceled(boolean canceled) {*
> *          }*
> *     });*
>
> Donde *Cancellable* es *org.gvsig.tools.task.Cancellable* (Deprecated
> también). Si ahora intento cambiarlo por el método nuevo recomendado:
>
> *GeometryManager geometryManager = GeometryLocator.getGeometryManager();*
> (org.gvsig.fmap.geom.primitive.Point) *Point imagePoint =
> geometryManager.createPoint((int) event.getPoint().getX(), (int)
> event.getPoint().getY(), SUBTYPES.GEOM2D);*
>
> y después más adelante:
>
> *Double tolerance =
> mapCtrl.getMapContext().getViewPort().toMapDistance(3);*
> *DynObjectSet bit = ((VectorLayer)laCapa).getInfo(imagePoint, tolerance);*
>
> Para *DynObjectSet* utilizo *org.gvsig.tools.dynobject.DynObjectSet*.
>
> Si ahora ejecuto gvSIG con las extensiones, cuando pincho en un elemento
> de la capa para obtener su información ya no se abre una ventana con los
> datos del elemento pero con el código antiguo marcado como Deprecated sí.
>
> ¿Por qué al realizar el cambio no funciona, tiene que ver algo con usar
> org.gvsig.fmap.geom.primitive.Point en lugar de java.awt.Point? ¿Estoy
> creando, gerenando, usando o importando algo que no es correcto?
>

Hola,
a ver de forma muy rapida...
no puedes convertir alegremente un java.awt.Point a una geometria
de tipo Point. Depende de donde hayas sacado ese java.awt.Point puede
irte o no. Si el punto de java lo has obtenido de una interaccion
con el interface de usuario probablemente estara en coordenadas
de pantalla. Es decir hablara de una X e Y que definen el pixel
de la pantalla sobre el que has pinchado, mientras que la geometria
de tipo Point habla de un punto con su X e Y en el mundo real, estaran
por ejemplo en metros o lat/long segun el sistema de referencia usado
en la vista.

Tirando de imaginacion...
Si lo que tienes desarrollado es un tool de gvSIG con su listener y
su behavior, probablemente ese event que tienes por ahi, sea un
PointEvent de gvSIG, y ademas del metodo getPoint, que estas usando,
tendra un getMapPoint que en lugar de devolver un punto de java
devuelbe ya una geometria contruida a partir del punto en pixels
de la pantalla en el que se hizo click pero ya con las transformaciones
adecuadas para representar un punto en el mundo real.

Si no es un PointEvent de gvSIG lo que tienes, pero lo que si tienes
son unas coordenadas en pixels sobre la vista y quieres saber el punto
en unidades geograficas a las que se refiere puedes usar algo como:

  mapControl.getViewPort().convertToMapPoint(javaPointInPixels)

A ver si te sirve.

Un saludo
Joaquin


> Un saludo y gracias.
>
>
>
>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
>


-- 
--------------------------------------
Joaquin Jose del Cerro Murciano
Development and software arquitecture manager at gvSIG Team
jjdelcerro en gvsig.com
jjdelcerro en gvsig.org
gvSIG Association
www.gvsig.com
www.gvsig.org
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20170105/4a87dfa7/attachment.html>


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