Revision 45941 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/MapContext.java

View differences:

MapContext.java
46 46
import org.gvsig.fmap.dal.DataStore;
47 47
import org.gvsig.fmap.dal.exception.ReadException;
48 48
import org.gvsig.fmap.dal.feature.FeatureStoreNotification;
49
import org.gvsig.fmap.geom.Geometry;
49 50
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
50 51
import org.gvsig.fmap.geom.GeometryLocator;
51 52
import org.gvsig.fmap.geom.GeometryManager;
53
import org.gvsig.fmap.geom.GeometryUtils;
52 54
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
53 55
import org.gvsig.fmap.geom.primitive.Envelope;
56
import org.gvsig.fmap.geom.primitive.Point;
54 57
import org.gvsig.fmap.mapcontext.events.ErrorEvent;
55 58
import org.gvsig.fmap.mapcontext.events.listeners.AtomicEventListener;
56 59
import org.gvsig.fmap.mapcontext.events.listeners.ErrorListener;
......
165 168

  
166 169
    private static final Logger LOGGER = LoggerFactory.getLogger(MapContext.class);
167 170

  
171
    private long scaleToUseWhenEnvelopeCollapse = 10000000;
172

  
168 173
    /**
169 174
     * <p>
170 175
     * Determines the number of frames.</p>
......
1183 1188
    public ViewPort getViewPort() {
1184 1189
        return viewPort;
1185 1190
    }
1186

  
1191
    
1187 1192
    /**
1188 1193
     * <p>
1189 1194
     * Sets a {@link ViewPort ViewPort} with the drawing information of this
......
1218 1223
     *
1219 1224
     * @param extent the extent of the new zoom
1220 1225
     */
1221
    public void zoomToEnvelope(Envelope extent) {
1222
        if (extent != null && !extent.isEmpty()) {
1223
            getViewPort().setEnvelope(extent);
1226
    public void zoomToEnvelope(Envelope env) {
1227
        if (env == null || env.isEmpty()) {
1228
            return;
1224 1229
        }
1230
        if( env.isCollapsed(Geometry.SUBTYPES.GEOM2D) ) {
1231
            // El envelop ha colapsado en X e Y.
1232
            // Fijamos la escala por defecto para cuando colapsa y centramos
1233
            // sobre el centro del envelop.
1234
            
1235
            this.setScaleView(this.getScaleToUseWhenEnvelopeCollapse());
1236
            
1237
            Envelope curenv = viewPort.getEnvelope();
1238
            double halfWidth = curenv.getLength(Geometry.DIMENSIONS.X) / 2;
1239
            double halfHeight = curenv.getLength(Geometry.DIMENSIONS.Y) / 2;
1240
            double centerx = env.getCenter(Geometry.DIMENSIONS.X);
1241
            double centery = env.getCenter(Geometry.DIMENSIONS.Y);
1242

  
1243
            Point lowerCorner = GeometryUtils.createPoint(halfWidth + centerx, halfHeight + centery);
1244
            Point upperCorner = GeometryUtils.createPoint(halfWidth - centerx, halfHeight - centery);
1245

  
1246
            env.setLowerCorner(lowerCorner);
1247
            env.setUpperCorner(upperCorner);            
1248
        }
1249
        this.viewPort.setEnvelope(env);
1225 1250
    }
1226 1251

  
1227 1252
    /**
......
1843 1868
        };
1844 1869
    }
1845 1870

  
1871
    public long getScaleToUseWhenEnvelopeCollapse() {
1872
        return this.scaleToUseWhenEnvelopeCollapse;
1873
    }
1874

  
1875
    public void setScaleToUseWhenEnvelopeCollapse(long scale) {
1876
        this.scaleToUseWhenEnvelopeCollapse = scale;
1877
    }
1878

  
1846 1879
}

Also available in: Unified diff