Revision 45486

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/BaseViewDocument.java
25 25
import java.awt.Color;
26 26
import java.awt.Component;
27 27
import java.awt.Dimension;
28
import java.awt.geom.Point2D;
28 29
import java.util.Iterator;
29 30
import java.util.List;
30 31
import java.util.Map;
......
43 44
import org.gvsig.app.project.documents.DocumentManager;
44 45
import org.gvsig.app.project.documents.view.info.gui.HTMLInfoToolPanel;
45 46
import org.gvsig.fmap.dal.DataStore;
47
import org.gvsig.fmap.geom.Geometry;
48
import org.gvsig.fmap.geom.GeometryLocator;
46 49
import org.gvsig.fmap.geom.primitive.Envelope;
47 50
import org.gvsig.fmap.mapcontext.MapContext;
51
import org.gvsig.fmap.mapcontext.ViewPort;
48 52
import org.gvsig.fmap.mapcontext.events.ErrorEvent;
49 53
import org.gvsig.fmap.mapcontext.events.listeners.ErrorListener;
50 54
import org.gvsig.fmap.mapcontext.layers.CancelationException;
......
383 387
        return false;
384 388
    }
385 389
    
390
    @Override
386 391
    public void center(Envelope envelope) {
387
        this.getMapContext().getViewPort().setEnvelope(envelope);
392
        ViewPort viewPort = this.getMapContext().getViewPort();
393

  
394
        try {
395
            Envelope oldExtent = viewPort.getAdjustedEnvelope();
396
            double oldCenterX = oldExtent.getCenter(0);
397
            double oldCenterY = oldExtent.getCenter(1);
398
            double centerX = envelope.getCenter(0);
399
            double centerY = envelope.getCenter(1);
400
            Point2D.Double center = new Point2D.Double(centerX, centerY);
401
            double movX = centerX - oldCenterX;
402
            double movY = centerY - oldCenterY;
403

  
404
            double minx = oldExtent.getMinimum(0) + movX;
405
            double miny = oldExtent.getMinimum(1) + movY;
406
            double maxX = oldExtent.getMaximum(0) + movX;
407
            double maxY = oldExtent.getMaximum(1) + movY;
408
            Envelope extent = GeometryLocator.getGeometryManager().createEnvelope(
409
                    minx, miny,
410
                    maxX, maxY,
411
                    Geometry.SUBTYPES.GEOM2D);
412
            viewPort.setEnvelope(extent);
413
        } catch (Exception e) {
414
            throw new RuntimeException(e);
415
        }
416

  
388 417
    }
389 418
}

Also available in: Unified diff