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
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