[Gvsig_desarrolladores] crear puntos y obtener coordenadas

MarC Ortiz yerotazma03 en hotmail.com
Mie Dic 7 04:57:16 CET 2011


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
  		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20111206/55c95616/attachment.htm 


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