Add view abstraction

This commit is contained in:
Éric Lemoine
2013-01-04 17:07:20 +01:00
parent 21331d1065
commit 927cffb2b7
34 changed files with 934 additions and 690 deletions
+23 -29
View File
@@ -133,26 +133,8 @@ ol.renderer.dom.Map.prototype.createLayerRenderer = function(layer) {
/**
* @inheritDoc
*/
ol.renderer.dom.Map.prototype.handleCenterChanged = function() {
goog.base(this, 'handleCenterChanged');
this.getMap().render();
};
/**
* @inheritDoc
*/
ol.renderer.dom.Map.prototype.handleResolutionChanged = function() {
goog.base(this, 'handleResolutionChanged');
this.getMap().render();
};
/**
* @inheritDoc
*/
ol.renderer.dom.Map.prototype.handleRotationChanged = function() {
goog.base(this, 'handleRotationChanged');
ol.renderer.dom.Map.prototype.handleViewPropertyChanged = function() {
goog.base(this, 'handleViewPropertyChanged');
this.getMap().render();
};
@@ -166,6 +148,15 @@ ol.renderer.dom.Map.prototype.handleSizeChanged = function() {
};
/**
* @inheritDoc
*/
ol.renderer.dom.Map.prototype.handleViewChanged = function() {
goog.base(this, 'handleViewChanged');
this.getMap().render();
};
/**
* Render the map. Sets up the layers pane on first render and adjusts its
* position as needed on subsequent calls.
@@ -177,10 +168,11 @@ ol.renderer.dom.Map.prototype.renderFrame = function(time) {
return;
}
var mapCenter = map.getCenter();
var view = map.getView().getView2D();
var mapCenter = view.getCenter();
var mapSize = map.getSize();
var mapResolution = map.getResolution();
var mapRotation = map.getRotation();
var mapResolution = view.getResolution();
var mapRotation = view.getRotation();
goog.asserts.assert(goog.isDefAndNotNull(mapCenter));
goog.asserts.assert(goog.isDef(mapResolution));
@@ -235,14 +227,15 @@ ol.renderer.dom.Map.prototype.resetLayersPane_ = function() {
var mapSize = map.getSize();
var halfWidth = mapSize.width / 2;
var halfHeight = mapSize.height / 2;
var center = map.getCenter();
var resolution = map.getResolution();
var view = /** @type {ol.View2D} */ (map.getView().getView2D());
var center = view.getCenter();
var resolution = view.getResolution();
var origin = new ol.Coordinate(
center.x - resolution * halfWidth,
center.y + resolution * halfHeight);
this.layersPaneOrigin_ = origin;
this.setTransformOrigin_(halfWidth, halfHeight);
this.applyTransform_(0, 0, map.getRotation());
this.applyTransform_(0, 0, view.getRotation());
goog.object.forEach(this.layerRenderers, function(layerRenderer) {
layerRenderer.setOrigin(origin);
});
@@ -273,8 +266,9 @@ ol.renderer.dom.Map.prototype.setTransformOrigin_ = function(x, y) {
*/
ol.renderer.dom.Map.prototype.transformLayersPane_ = function() {
var map = this.map;
var resolution = map.getResolution();
var center = map.getCenter();
var view = map.getView();
var resolution = view.getResolution();
var center = view.getCenter();
var size = map.getSize();
var origin = this.layersPaneOrigin_;
var ox = (center.x - origin.x) / resolution;
@@ -282,5 +276,5 @@ ol.renderer.dom.Map.prototype.transformLayersPane_ = function() {
this.setTransformOrigin_(ox, oy);
var dx = ox - (size.width / 2);
var dy = oy - (size.height / 2);
this.applyTransform_(-dx, -dy, map.getRotation());
this.applyTransform_(-dx, -dy, view.getRotation());
};
+4 -2
View File
@@ -95,8 +95,10 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = function(time) {
if (!map.isDef()) {
return;
}
var mapExtent = /** @type {!ol.Extent} */ map.getRotatedExtent();
var mapResolution = /** @type {number} */ map.getResolution();
var mapSize = /** @type {ol.Size} */ (map.getSize());
var view = map.getView().getView2D();
var mapExtent = /** @type {!ol.Extent} */ (view.getRotatedExtent(mapSize));
var mapResolution = /** @type {number} */ (view.getResolution());
var resolutionChanged = (mapResolution !== this.renderedMapResolution_);
var tileLayer = this.getLayer();