Handle righthanded polygons in format, not source

This commit is contained in:
Andreas Hocevar
2015-09-25 17:15:01 +02:00
parent 29b64d8628
commit 0e8e104a2d
4 changed files with 18 additions and 12 deletions

View File

@@ -4106,7 +4106,6 @@ olx.source.TileImageOptions.prototype.wrapX;
* projection: ol.proj.ProjectionLike,
* state: (ol.source.State|string|undefined),
* format: (ol.format.Feature|undefined),
* rightHandedPolygons: (boolean|undefined),
* tileClass: (function(new: ol.VectorTile, ol.TileCoord,
* ol.TileState, string, ol.format.Feature,
* ol.TileLoadFunctionType)|undefined),
@@ -4153,16 +4152,6 @@ olx.source.VectorTileOptions.prototype.opaque;
olx.source.VectorTileOptions.prototype.projection;
/**
* Assume that all polygons provided by this source follow the right-hand rule
* (counter-clockwise for exterior and clockwise for interior rings). If `true`,
* renderers will skip the check for the ring orientation.
* @type {boolean|undefined}
* @api
*/
olx.source.VectorTileOptions.prototype.rightHandedPolygons;
/**
* Source state.
* @type {ol.source.State|string|undefined}

View File

@@ -24,6 +24,12 @@ ol.format.Feature = function() {
* @type {ol.proj.Projection}
*/
this.defaultDataProjection = null;
/**
* @protected
* @type {boolean}
*/
this.rightHandedPolygons = false;
};
@@ -53,6 +59,14 @@ ol.format.Feature.prototype.getReadOptions = function(source, opt_options) {
};
/**
* @return {boolean}
*/
ol.format.Feature.prototype.getRightHandedPolygons = function() {
return this.rightHandedPolygons;
};
/**
* Sets the `defaultDataProjection` on the options, if no `dataProjection`
* is set.

View File

@@ -75,6 +75,8 @@ ol.format.MVT = function(opt_options) {
*/
this.layers_ = goog.isDef(options.layers) ? options.layers : null;
this.rightHandedPolygons = true;
};
goog.inherits(ol.format.MVT, ol.format.Feature);

View File

@@ -196,7 +196,8 @@ ol.renderer.canvas.VectorTileLayer.prototype.createReplayGroup = function(tile,
var tileResolution = pixelSpace ? source.getTilePixelRatio() : resolution;
replayState.dirty = false;
var replayGroup = new ol.render.canvas.ReplayGroup(0, extent,
tileResolution, layer.getRenderBuffer(), source.getRightHandedPolygons());
tileResolution, layer.getRenderBuffer(),
tile.getFormat().getRightHandedPolygons());
var squaredTolerance = ol.renderer.vector.getSquaredTolerance(
tileResolution, pixelRatio);