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, * projection: ol.proj.ProjectionLike,
* state: (ol.source.State|string|undefined), * state: (ol.source.State|string|undefined),
* format: (ol.format.Feature|undefined), * format: (ol.format.Feature|undefined),
* rightHandedPolygons: (boolean|undefined),
* tileClass: (function(new: ol.VectorTile, ol.TileCoord, * tileClass: (function(new: ol.VectorTile, ol.TileCoord,
* ol.TileState, string, ol.format.Feature, * ol.TileState, string, ol.format.Feature,
* ol.TileLoadFunctionType)|undefined), * ol.TileLoadFunctionType)|undefined),
@@ -4153,16 +4152,6 @@ olx.source.VectorTileOptions.prototype.opaque;
olx.source.VectorTileOptions.prototype.projection; 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. * Source state.
* @type {ol.source.State|string|undefined} * @type {ol.source.State|string|undefined}

View File

@@ -24,6 +24,12 @@ ol.format.Feature = function() {
* @type {ol.proj.Projection} * @type {ol.proj.Projection}
*/ */
this.defaultDataProjection = null; 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` * Sets the `defaultDataProjection` on the options, if no `dataProjection`
* is set. * is set.

View File

@@ -75,6 +75,8 @@ ol.format.MVT = function(opt_options) {
*/ */
this.layers_ = goog.isDef(options.layers) ? options.layers : null; this.layers_ = goog.isDef(options.layers) ? options.layers : null;
this.rightHandedPolygons = true;
}; };
goog.inherits(ol.format.MVT, ol.format.Feature); 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; var tileResolution = pixelSpace ? source.getTilePixelRatio() : resolution;
replayState.dirty = false; replayState.dirty = false;
var replayGroup = new ol.render.canvas.ReplayGroup(0, extent, 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( var squaredTolerance = ol.renderer.vector.getSquaredTolerance(
tileResolution, pixelRatio); tileResolution, pixelRatio);