Correctly reproject sources in wrappable projection

With extent smaller than the projection extent
This commit is contained in:
Petr Sloup
2015-08-24 10:21:27 +02:00
parent 4c236a64b8
commit 3b1d72202a
2 changed files with 21 additions and 9 deletions
+1 -2
View File
@@ -105,7 +105,6 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid,
return; return;
} }
if (!sourceProj.isGlobal()) {
var sourceProjExtent = sourceProj.getExtent(); var sourceProjExtent = sourceProj.getExtent();
if (!goog.isNull(sourceProjExtent)) { if (!goog.isNull(sourceProjExtent)) {
if (goog.isNull(maxSourceExtent)) { if (goog.isNull(maxSourceExtent)) {
@@ -115,7 +114,6 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid,
maxSourceExtent, sourceProjExtent); maxSourceExtent, sourceProjExtent);
} }
} }
}
var targetResolution = targetTileGrid.getResolution(z); var targetResolution = targetTileGrid.getResolution(z);
@@ -155,6 +153,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid,
var srcExtent = this.triangulation_.calculateSourceExtent(); var srcExtent = this.triangulation_.calculateSourceExtent();
if (!goog.isNull(maxSourceExtent) && if (!goog.isNull(maxSourceExtent) &&
!this.triangulation_.getWrapsXInSource() &&
!ol.extent.intersects(maxSourceExtent, srcExtent)) { !ol.extent.intersects(maxSourceExtent, srcExtent)) {
this.state = ol.TileState.EMPTY; this.state = ol.TileState.EMPTY;
} else { } else {
+13
View File
@@ -78,6 +78,16 @@ ol.reproj.Triangulation = function(sourceProj, targetProj, targetExtent,
*/ */
this.wrapsXInSource_ = false; this.wrapsXInSource_ = false;
/**
* @type {boolean}
* @private
*/
this.canWrapXInSource_ = this.sourceProj_.canWrapX() &&
!goog.isNull(maxSourceExtent) &&
!goog.isNull(this.sourceProj_.getExtent()) &&
(ol.extent.getWidth(maxSourceExtent) ==
ol.extent.getWidth(this.sourceProj_.getExtent()));
/** /**
* @type {number} * @type {number}
* @private * @private
@@ -195,6 +205,9 @@ ol.reproj.Triangulation.prototype.addQuadIfValid_ = function(a, b, c, d,
} }
if (wrapsX) { if (wrapsX) {
if (!this.canWrapXInSource_) {
return;
}
this.wrapsXInSource_ = true; this.wrapsXInSource_ = true;
} }