Prepare replays for vector tiles
This commit is contained in:
@@ -324,16 +324,19 @@ if (ol.ENABLE_WEBGL) {
|
|||||||
*/
|
*/
|
||||||
ol.render.webgl.LineStringReplay.prototype.drawMultiLineString = function(multiLineStringGeometry, feature) {
|
ol.render.webgl.LineStringReplay.prototype.drawMultiLineString = function(multiLineStringGeometry, feature) {
|
||||||
var indexCount = this.indices.length;
|
var indexCount = this.indices.length;
|
||||||
var lineStringGeometries = multiLineStringGeometry.getLineStrings();
|
var ends = multiLineStringGeometry.getEnds();
|
||||||
|
ends.unshift(0);
|
||||||
|
var flatCoordinates = multiLineStringGeometry.getFlatCoordinates();
|
||||||
|
var stride = multiLineStringGeometry.getStride();
|
||||||
var i, ii;
|
var i, ii;
|
||||||
for (i = 0, ii = lineStringGeometries.length; i < ii; ++i) {
|
if (ends.length > 1) {
|
||||||
var flatCoordinates = lineStringGeometries[i].getFlatCoordinates();
|
for (i = 1, ii = ends.length; i < ii; ++i) {
|
||||||
var stride = lineStringGeometries[i].getStride();
|
if (this.isValid_(flatCoordinates, ends[i - 1], ends[i], stride)) {
|
||||||
if (this.isValid_(flatCoordinates, 0, flatCoordinates.length, stride)) {
|
var lineString = ol.geom.flat.transform.translate(flatCoordinates, ends[i - 1], ends[i],
|
||||||
flatCoordinates = ol.geom.flat.transform.translate(flatCoordinates, 0, flatCoordinates.length,
|
stride, -this.origin[0], -this.origin[1]);
|
||||||
stride, -this.origin[0], -this.origin[1]);
|
this.drawCoordinates_(
|
||||||
this.drawCoordinates_(
|
lineString, 0, lineString.length, stride);
|
||||||
flatCoordinates, 0, flatCoordinates.length, stride);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.indices.length > indexCount) {
|
if (this.indices.length > indexCount) {
|
||||||
|
|||||||
@@ -712,28 +712,33 @@ if (ol.ENABLE_WEBGL) {
|
|||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
ol.render.webgl.PolygonReplay.prototype.drawMultiPolygon = function(multiPolygonGeometry, feature) {
|
ol.render.webgl.PolygonReplay.prototype.drawMultiPolygon = function(multiPolygonGeometry, feature) {
|
||||||
var polygons = multiPolygonGeometry.getPolygons();
|
var endss = multiPolygonGeometry.getEndss();
|
||||||
var stride = multiPolygonGeometry.getStride();
|
var stride = multiPolygonGeometry.getStride();
|
||||||
var currIndex = this.indices.length;
|
var currIndex = this.indices.length;
|
||||||
var currLineIndex = this.lineStringReplay.getCurrentIndex();
|
var currLineIndex = this.lineStringReplay.getCurrentIndex();
|
||||||
|
var flatCoordinates = multiPolygonGeometry.getFlatCoordinates();
|
||||||
var i, ii, j, jj;
|
var i, ii, j, jj;
|
||||||
for (i = 0, ii = polygons.length; i < ii; ++i) {
|
var start = 0;
|
||||||
var linearRings = polygons[i].getLinearRings();
|
for (i = 0, ii = endss.length; i < ii; ++i) {
|
||||||
if (linearRings.length > 0) {
|
var ends = endss[i];
|
||||||
var flatCoordinates = linearRings[0].getFlatCoordinates();
|
if (ends.length > 0) {
|
||||||
flatCoordinates = ol.geom.flat.transform.translate(flatCoordinates, 0, flatCoordinates.length,
|
var outerRing = ol.geom.flat.transform.translate(flatCoordinates, start, ends[0],
|
||||||
stride, -this.origin[0], -this.origin[1]);
|
stride, -this.origin[0], -this.origin[1]);
|
||||||
var holes = [];
|
if (outerRing.length) {
|
||||||
var holeFlatCoords;
|
var holes = [];
|
||||||
for (j = 1, jj = linearRings.length; j < jj; ++j) {
|
var holeFlatCoords;
|
||||||
holeFlatCoords = linearRings[j].getFlatCoordinates();
|
for (j = 1, jj = ends.length; j < jj; ++j) {
|
||||||
holeFlatCoords = ol.geom.flat.transform.translate(holeFlatCoords, 0, holeFlatCoords.length,
|
if (ends[j] !== ends[j - 1]) {
|
||||||
stride, -this.origin[0], -this.origin[1]);
|
holeFlatCoords = ol.geom.flat.transform.translate(flatCoordinates, ends[j - 1],
|
||||||
holes.push(holeFlatCoords);
|
ends[j], stride, -this.origin[0], -this.origin[1]);
|
||||||
|
holes.push(holeFlatCoords);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.lineStringReplay.drawPolygonCoordinates(outerRing, holes, stride);
|
||||||
|
this.drawCoordinates_(outerRing, holes, stride);
|
||||||
}
|
}
|
||||||
this.lineStringReplay.drawPolygonCoordinates(flatCoordinates, holes, stride);
|
|
||||||
this.drawCoordinates_(flatCoordinates, holes, stride);
|
|
||||||
}
|
}
|
||||||
|
start = ends[ends.length - 1];
|
||||||
}
|
}
|
||||||
if (this.indices.length > currIndex) {
|
if (this.indices.length > currIndex) {
|
||||||
this.startIndices.push(currIndex);
|
this.startIndices.push(currIndex);
|
||||||
@@ -753,30 +758,34 @@ if (ol.ENABLE_WEBGL) {
|
|||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
ol.render.webgl.PolygonReplay.prototype.drawPolygon = function(polygonGeometry, feature) {
|
ol.render.webgl.PolygonReplay.prototype.drawPolygon = function(polygonGeometry, feature) {
|
||||||
var linearRings = polygonGeometry.getLinearRings();
|
var ends = polygonGeometry.getEnds();
|
||||||
var stride = polygonGeometry.getStride();
|
var stride = polygonGeometry.getStride();
|
||||||
if (linearRings.length > 0) {
|
if (ends.length > 0) {
|
||||||
this.startIndices.push(this.indices.length);
|
var flatCoordinates = polygonGeometry.getFlatCoordinates();
|
||||||
this.startIndicesFeature.push(feature);
|
var outerRing = ol.geom.flat.transform.translate(flatCoordinates, 0, ends[0],
|
||||||
if (this.state_.changed) {
|
|
||||||
this.styleIndices_.push(this.indices.length);
|
|
||||||
this.state_.changed = false;
|
|
||||||
}
|
|
||||||
this.lineStringReplay.setPolygonStyle(feature);
|
|
||||||
|
|
||||||
var flatCoordinates = linearRings[0].getFlatCoordinates();
|
|
||||||
flatCoordinates = ol.geom.flat.transform.translate(flatCoordinates, 0, flatCoordinates.length,
|
|
||||||
stride, -this.origin[0], -this.origin[1]);
|
stride, -this.origin[0], -this.origin[1]);
|
||||||
var holes = [];
|
if (outerRing.length) {
|
||||||
var i, ii, holeFlatCoords;
|
var holes = [];
|
||||||
for (i = 1, ii = linearRings.length; i < ii; ++i) {
|
var i, ii, holeFlatCoords;
|
||||||
holeFlatCoords = linearRings[i].getFlatCoordinates();
|
for (i = 1, ii = ends.length; i < ii; ++i) {
|
||||||
holeFlatCoords = ol.geom.flat.transform.translate(holeFlatCoords, 0, holeFlatCoords.length,
|
if (ends[i] !== ends[i - 1]) {
|
||||||
stride, -this.origin[0], -this.origin[1]);
|
holeFlatCoords = ol.geom.flat.transform.translate(flatCoordinates, ends[i - 1],
|
||||||
holes.push(holeFlatCoords);
|
ends[i], stride, -this.origin[0], -this.origin[1]);
|
||||||
|
holes.push(holeFlatCoords);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.startIndices.push(this.indices.length);
|
||||||
|
this.startIndicesFeature.push(feature);
|
||||||
|
if (this.state_.changed) {
|
||||||
|
this.styleIndices_.push(this.indices.length);
|
||||||
|
this.state_.changed = false;
|
||||||
|
}
|
||||||
|
this.lineStringReplay.setPolygonStyle(feature);
|
||||||
|
|
||||||
|
this.lineStringReplay.drawPolygonCoordinates(outerRing, holes, stride);
|
||||||
|
this.drawCoordinates_(outerRing, holes, stride);
|
||||||
}
|
}
|
||||||
this.lineStringReplay.drawPolygonCoordinates(flatCoordinates, holes, stride);
|
|
||||||
this.drawCoordinates_(flatCoordinates, holes, stride);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user