Set camera defaults when layers is changed

This commit is contained in:
Tom Payne
2012-07-14 17:47:43 +02:00
parent 9266b7fdb2
commit b80ce1fc26

View File

@@ -236,25 +236,9 @@ ol.Map.prototype.handleCameraPropertyChanged = function() {
* @protected
*/
ol.Map.prototype.handleLayerAdd = function(layer) {
var key = goog.getUid(layer);
var layerRenderer = this.createLayerRenderer(layer);
this.layerRenderers_[key] = layerRenderer;
var camera = this.getCamera();
var storeExtent = layer.getStore().getExtent();
if (!goog.isDef(camera.getPosition())) {
var position = storeExtent.getCenter();
camera.setPosition(position);
}
if (!goog.isDef(camera.getResolution())) {
var resolution = this.getResolutionForExtent(storeExtent);
camera.setResolution(resolution);
}
if (!goog.isDef(camera.getRotation())) {
camera.setRotation(0);
}
};
@@ -279,6 +263,7 @@ ol.Map.prototype.handleLayersInsertAt = function(event) {
var layers = /** @type {ol.Array} */ (event.target);
var layer = /** @type {ol.Layer} */ layers.getAt(event.index);
this.handleLayerAdd(layer);
this.setCameraDefaults_();
};
@@ -322,6 +307,7 @@ ol.Map.prototype.handleLayersChanged = function() {
goog.events.listen(layers, ol.ArrayEventType.SET_AT,
this.handleLayersSetAt, false, this)
];
this.setCameraDefaults_();
}
};
@@ -345,6 +331,37 @@ ol.Map.prototype.setCamera = function(camera) {
};
/**
* @private
*/
ol.Map.prototype.setCameraDefaults_ = function() {
var camera = this.getCamera();
if (camera.isFullyDefined()) {
return;
}
var layers = this.getLayers();
if (!goog.isDefAndNotNull(layers)) {
return;
}
if (layers.getLength() < 1) {
return;
}
var layer = /** @type {ol.Layer} */ (layers.getAt(0));
var storeExtent = layer.getStore().getExtent();
if (!goog.isDef(camera.getPosition())) {
var position = storeExtent.getCenter();
camera.setPosition(position);
}
if (!goog.isDef(camera.getResolution())) {
var resolution = this.getResolutionForExtent(storeExtent);
camera.setResolution(resolution);
}
if (!goog.isDef(camera.getRotation())) {
camera.setRotation(0);
}
};
/**
* @param {ol.Extent} extent Extent.
*/