Merge branch 'master' of github.com:openlayers/ol3 into vector
Conflicts: src/objectliterals.exports
This commit is contained in:
@@ -6,6 +6,7 @@ goog.provide('ol.renderer.canvas.TileLayer');
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.vec.Mat4');
|
||||
goog.require('ol.Extent');
|
||||
goog.require('ol.Size');
|
||||
goog.require('ol.Tile');
|
||||
goog.require('ol.TileCoord');
|
||||
@@ -103,8 +104,17 @@ ol.renderer.canvas.TileLayer.prototype.renderFrame =
|
||||
var z = tileGrid.getZForResolution(view2DState.resolution);
|
||||
var tileSize = tileGrid.getTileSize(z);
|
||||
var tileResolution = tileGrid.getResolution(z);
|
||||
var center = view2DState.center;
|
||||
var extent;
|
||||
if (tileResolution == view2DState.resolution) {
|
||||
center = this.snapCenterToPixel(center, tileResolution, frameState.size);
|
||||
extent = ol.Extent.getForView2DAndSize(
|
||||
center, tileResolution, view2DState.rotation, frameState.size);
|
||||
} else {
|
||||
extent = frameState.extent;
|
||||
}
|
||||
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
|
||||
frameState.extent, tileResolution);
|
||||
extent, tileResolution);
|
||||
var tileRangeWidth = tileRange.getWidth();
|
||||
var tileRangeHeight = tileRange.getHeight();
|
||||
|
||||
@@ -238,7 +248,7 @@ ol.renderer.canvas.TileLayer.prototype.renderFrame =
|
||||
}
|
||||
|
||||
this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange);
|
||||
tileSource.useLowResolutionTiles(z, frameState.extent, tileGrid);
|
||||
tileSource.useLowResolutionTiles(z, extent, tileGrid);
|
||||
this.scheduleExpireCache(frameState, tileSource);
|
||||
|
||||
var transform = this.transform_;
|
||||
@@ -253,8 +263,8 @@ ol.renderer.canvas.TileLayer.prototype.renderFrame =
|
||||
1);
|
||||
goog.vec.Mat4.translate(
|
||||
transform,
|
||||
(origin.x - view2DState.center.x) / tileResolution,
|
||||
(view2DState.center.y - origin.y) / tileResolution,
|
||||
(origin.x - center.x) / tileResolution,
|
||||
(center.y - origin.y) / tileResolution,
|
||||
0);
|
||||
|
||||
};
|
||||
|
||||
@@ -90,8 +90,17 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
||||
}
|
||||
var z = tileGrid.getZForResolution(view2DState.resolution);
|
||||
var tileResolution = tileGrid.getResolution(z);
|
||||
var center = view2DState.center;
|
||||
var extent;
|
||||
if (tileResolution == view2DState.resolution) {
|
||||
center = this.snapCenterToPixel(center, tileResolution, frameState.size);
|
||||
extent = ol.Extent.getForView2DAndSize(
|
||||
center, tileResolution, view2DState.rotation, frameState.size);
|
||||
} else {
|
||||
extent = frameState.extent;
|
||||
}
|
||||
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
|
||||
frameState.extent, tileResolution);
|
||||
extent, tileResolution);
|
||||
|
||||
/** @type {Object.<number, Object.<string, ol.Tile>>} */
|
||||
var tilesToDrawByZ = {};
|
||||
@@ -146,7 +155,7 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
||||
tileLayerZ = this.tileLayerZs_[tileLayerZKey];
|
||||
} else {
|
||||
tileCoordOrigin =
|
||||
tileGrid.getTileCoordForCoordAndZ(view2DState.center, tileLayerZKey);
|
||||
tileGrid.getTileCoordForCoordAndZ(center, tileLayerZKey);
|
||||
tileLayerZ = new ol.renderer.dom.TileLayerZ_(tileGrid, tileCoordOrigin);
|
||||
newTileLayerZKeys[tileLayerZKey] = true;
|
||||
this.tileLayerZs_[tileLayerZKey] = tileLayerZ;
|
||||
@@ -183,8 +192,8 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
||||
resolution / view2DState.resolution, 1);
|
||||
goog.vec.Mat4.translate(
|
||||
transform,
|
||||
(origin.x - view2DState.center.x) / resolution,
|
||||
(view2DState.center.y - origin.y) / resolution,
|
||||
(origin.x - center.x) / resolution,
|
||||
(center.y - origin.y) / resolution,
|
||||
0);
|
||||
tileLayerZ.setTransform(transform);
|
||||
if (tileLayerZKey in newTileLayerZKeys) {
|
||||
@@ -201,7 +210,7 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
||||
} else {
|
||||
if (!frameState.viewHints[ol.ViewHint.ANIMATING] &&
|
||||
!frameState.viewHints[ol.ViewHint.INTERACTING]) {
|
||||
tileLayerZ.removeTilesOutsideExtent(frameState.extent);
|
||||
tileLayerZ.removeTilesOutsideExtent(extent);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -217,7 +226,7 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
||||
}
|
||||
|
||||
this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange);
|
||||
tileSource.useLowResolutionTiles(z, frameState.extent, tileGrid);
|
||||
tileSource.useLowResolutionTiles(z, extent, tileGrid);
|
||||
this.scheduleExpireCache(frameState, tileSource);
|
||||
|
||||
};
|
||||
|
||||
@@ -3,6 +3,7 @@ goog.provide('ol.renderer.Layer');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.events.EventType');
|
||||
goog.require('ol.Attribution');
|
||||
goog.require('ol.Coordinate');
|
||||
goog.require('ol.FrameState');
|
||||
goog.require('ol.Image');
|
||||
goog.require('ol.ImageState');
|
||||
@@ -299,3 +300,18 @@ ol.renderer.Layer.prototype.createGetTileIfLoadedFunction =
|
||||
return isLoadedFunction(tile) ? tile : null;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.Coordinate} center Center.
|
||||
* @param {number} resolution Resolution.
|
||||
* @param {ol.Size} size Size.
|
||||
* @return {ol.Coordinate} Snapped center.
|
||||
* @protected
|
||||
*/
|
||||
ol.renderer.Layer.prototype.snapCenterToPixel =
|
||||
function(center, resolution, size) {
|
||||
return new ol.Coordinate(
|
||||
resolution * (Math.round(center.x / resolution) + (size.width % 2) / 2),
|
||||
resolution * (Math.round(center.y / resolution) + (size.height % 2) / 2));
|
||||
};
|
||||
|
||||
@@ -282,7 +282,6 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
||||
|
||||
var view2DState = frameState.view2DState;
|
||||
var projection = view2DState.projection;
|
||||
var center = view2DState.center;
|
||||
|
||||
var tileLayer = this.getTileLayer();
|
||||
var tileSource = tileLayer.getTileSource();
|
||||
@@ -293,8 +292,17 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
||||
}
|
||||
var z = tileGrid.getZForResolution(view2DState.resolution);
|
||||
var tileResolution = tileGrid.getResolution(z);
|
||||
var center = view2DState.center;
|
||||
var extent;
|
||||
if (tileResolution == view2DState.resolution) {
|
||||
center = this.snapCenterToPixel(center, tileResolution, frameState.size);
|
||||
extent = ol.Extent.getForView2DAndSize(
|
||||
center, tileResolution, view2DState.rotation, frameState.size);
|
||||
} else {
|
||||
extent = frameState.extent;
|
||||
}
|
||||
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
|
||||
frameState.extent, tileResolution);
|
||||
extent, tileResolution);
|
||||
|
||||
var framebufferExtent;
|
||||
if (!goog.isNull(this.renderedTileRange_) &&
|
||||
@@ -460,14 +468,14 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
||||
}
|
||||
|
||||
this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange);
|
||||
tileSource.useLowResolutionTiles(z, frameState.extent, tileGrid);
|
||||
tileSource.useLowResolutionTiles(z, extent, tileGrid);
|
||||
this.scheduleExpireCache(frameState, tileSource);
|
||||
|
||||
goog.vec.Mat4.makeIdentity(this.texCoordMatrix_);
|
||||
goog.vec.Mat4.translate(this.texCoordMatrix_,
|
||||
(view2DState.center.x - framebufferExtent.minX) /
|
||||
(center.x - framebufferExtent.minX) /
|
||||
(framebufferExtent.maxX - framebufferExtent.minX),
|
||||
(view2DState.center.y - framebufferExtent.minY) /
|
||||
(center.y - framebufferExtent.minY) /
|
||||
(framebufferExtent.maxY - framebufferExtent.minY),
|
||||
0);
|
||||
goog.vec.Mat4.rotateZ(this.texCoordMatrix_, view2DState.rotation);
|
||||
|
||||
Reference in New Issue
Block a user