Buen dia!
 
Estoy realizando una extension para gvsig en donde busco por medio de los 
Listener, crear puntos al vuelo sobre el MapControl y obtener a su vez las 
coordenadas de dichos puntos que se van creando, hasta ahora he conseguido 
capturar las coordenadas pero de la vista, a través de la clase que enseñare al 
final, pero a su vez sé, que la herramienta Catch Coodinates esta capturando 
las coordenadas de los layer y es precisamente lo que necesito, pero no se como 
acceder al codigo de dicha herramienta, por favor si alguien conoce, espero me 
indique!
 
A su vez, como ya comentaba, quiero lograr crear puntos al vuelo, pero la unica 
forma que lo he conseguido es creando puntos pero de capas en edicion, reitero 
que quiero conseguir que esto sea al vuelo y sin tener que estar editando una 
capa existente, solo quiero indicar que voy a dibujar puntos y capturarlos para 
con estos realizar otras operaciones 
 
Espero me puedan ayudar, muchas gracias!
 
 
package org.gvsig.proyecto;

import java.awt.Cursor;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.geom.Point2D;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
//import com.hardcode.driverManager.DriverLoadException;
import java.lang.Exception;
//import com.iver.cit.gvsig.fmap.DriverException;
import com.iver.cit.gvsig.fmap.MapControl;
import com.iver.cit.gvsig.fmap.layers.FBitSet;
import com.iver.cit.gvsig.fmap.layers.FLayer;
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
import com.iver.cit.gvsig.fmap.tools.Events.PointEvent;
import com.iver.cit.gvsig.fmap.tools.Listeners.PointListener;
import com.iver.cit.gvsig.fmap.tools.BehaviorException;

/**
 * Implementación de la interfaz PointListener como herramienta para realizar
 * una selección por punto.
 *
 * @author Vicente Caballero Navarro
 */
 
public class PointSelectionListener implements PointListener {

 private Point2D p;
 private final Image img = new 
ImageIcon(MapControl.class.getResource("images/PointSelectCursor.gif")).getImage();
 private Cursor cur = Toolkit.getDefaultToolkit().createCustomCursor(img, new 
Point(16, 16), "");
 protected MapControl mapCtrl;
 /**
  * Crea un nuevo AreaListenerImpl.
  *
  * @param mc MapControl.
  */
  
 public PointSelectionListener(MapControl mc) {
 
  JOptionPane.showMessageDialog(null, " Estoy en PointSelection");
  
  this.mapCtrl = mc;
 }
 /**
  * @see 
com.iver.cit.gvsig.fmap.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.Events.PointEvent)
  */
  
 public void point(PointEvent event) throws BehaviorException {
  
    
  
  try {
   
   //mapCtrl.getMapContext().selectByPoint(event.getPoint(), 1);
            Point2D p = event.getPoint();
   
            Point2D mapPoint = mapCtrl.getViewPort().toMapPoint((int) p.getX(), 
(int) p.getY());
   
   
   
    JOptionPane.showMessageDialog(null, "Puntos x:" +  (int)p.getX() + " Puntos 
y:" + (int)p.getY());
            // Tolerancia de 3 pixels
            double tol = mapCtrl.getViewPort().toMapDistance(3);
            FLayer[] actives = mapCtrl.getMapContext()
            .getLayers().getActives();
            for (int i=0; i < actives.length; i++)
            {
                if (actives[i] instanceof FLyrVect) {
                    FLyrVect lyrVect = (FLyrVect) actives[i];
                    FBitSet oldBitSet = 
lyrVect.getSource().getRecordset().getSelection();
                    FBitSet newBitSet = lyrVect.queryByPoint(mapPoint, tol);
                    if (event.getEvent().isControlDown())
                        newBitSet.xor(oldBitSet);
                    lyrVect.getRecordset().setSelection(newBitSet);
                }
            }
  } /*catch (DriverException e) {*/
  catch (Exception e) {
   e.printStackTrace();
   throw new BehaviorException("No se pudo hacer la selección");
   
  } /*catch (DriverLoadException e) {*/
   /*catch (Exception e) {*/
   // TODO Auto-generated catch block
   //e.printStackTrace();
  //}
 }
 
 public void setPoint(Point2D p) throws BehaviorException {
 
  this.p = p;
 }
 
 /**
  * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#getCursor()
  */
 public Cursor getCursor() {
  return cur;
 }
 /**
  * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#cancelDrawing()
  */
 public boolean cancelDrawing() {
  return false;
 }
 public void pointDoubleClick(PointEvent event) throws BehaviorException {
  
  // mapCtrl.getMapContext().selectByPoint(event.getPoint(), 1);
            Point2D p = event.getPoint();
            Point2D mapPoint = mapCtrl.getViewPort().toMapPoint((int) p.getX(), 
(int) p.getY());
   
    JOptionPane.showMessageDialog(null, "Puntos x:" +  (int)p.getX() + " Puntos 
y:" + (int)p.getY());
 }

}



 
Diana Marcela Ortiz Giraldo
   Universidad del Valle
                                          
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores@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: 
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores

Responder a