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

View File

@@ -105,15 +105,13 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid,
return;
}
if (!sourceProj.isGlobal()) {
var sourceProjExtent = sourceProj.getExtent();
if (!goog.isNull(sourceProjExtent)) {
if (goog.isNull(maxSourceExtent)) {
maxSourceExtent = sourceProjExtent;
} else {
maxSourceExtent = ol.extent.getIntersection(
maxSourceExtent, sourceProjExtent);
}
var sourceProjExtent = sourceProj.getExtent();
if (!goog.isNull(sourceProjExtent)) {
if (goog.isNull(maxSourceExtent)) {
maxSourceExtent = sourceProjExtent;
} else {
maxSourceExtent = ol.extent.getIntersection(
maxSourceExtent, sourceProjExtent);
}
}
@@ -155,6 +153,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid,
var srcExtent = this.triangulation_.calculateSourceExtent();
if (!goog.isNull(maxSourceExtent) &&
!this.triangulation_.getWrapsXInSource() &&
!ol.extent.intersects(maxSourceExtent, srcExtent)) {
this.state = ol.TileState.EMPTY;
} else {

View File

@@ -78,6 +78,16 @@ ol.reproj.Triangulation = function(sourceProj, targetProj, targetExtent,
*/
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}
* @private
@@ -195,6 +205,9 @@ ol.reproj.Triangulation.prototype.addQuadIfValid_ = function(a, b, c, d,
}
if (wrapsX) {
if (!this.canWrapXInSource_) {
return;
}
this.wrapsXInSource_ = true;
}