Add renderMode option to ol.layer.Vector
This also deprecates ol.source.ImageVector.
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
goog.provide('ol.layer.VectorRenderType');
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
* Render mode for vector layers:
|
||||
* * `'image'`: Vector tiles are rendered as images. Great performance, but
|
||||
* point symbols and texts are always rotated with the view and pixels are
|
||||
* scaled during zoom animations.
|
||||
* * `'vector'`: Vector tiles are rendered as vectors. Most accurate rendering
|
||||
* even during animations, but slower performance.
|
||||
* @api
|
||||
*/
|
||||
ol.layer.VectorRenderType = {
|
||||
IMAGE: 'image',
|
||||
VECTOR: 'vector'
|
||||
};
|
||||
@@ -3,6 +3,7 @@ goog.provide('ol.layer.Vector');
|
||||
goog.require('ol');
|
||||
goog.require('ol.LayerType');
|
||||
goog.require('ol.layer.Layer');
|
||||
goog.require('ol.layer.VectorRenderType');
|
||||
goog.require('ol.obj');
|
||||
goog.require('ol.style.Style');
|
||||
|
||||
@@ -75,6 +76,12 @@ ol.layer.Vector = function(opt_options) {
|
||||
this.updateWhileInteracting_ = options.updateWhileInteracting !== undefined ?
|
||||
options.updateWhileInteracting : false;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {ol.layer.VectorTileRenderType|string}
|
||||
*/
|
||||
this.renderMode_ = options.renderMode || ol.layer.VectorRenderType.VECTOR;
|
||||
|
||||
/**
|
||||
* The layer type.
|
||||
* @protected
|
||||
@@ -197,6 +204,14 @@ ol.layer.Vector.prototype.setStyle = function(style) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @return {ol.layer.VectorRenderType|string} The render mode.
|
||||
*/
|
||||
ol.layer.Vector.prototype.getRenderMode = function() {
|
||||
return this.renderMode_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
* @private
|
||||
|
||||
+11
-26
@@ -24,6 +24,17 @@ goog.require('ol.obj');
|
||||
ol.layer.VectorTile = function(opt_options) {
|
||||
var options = opt_options ? opt_options : {};
|
||||
|
||||
var renderMode = options.renderMode || ol.layer.VectorTileRenderType.HYBRID;
|
||||
ol.asserts.assert(renderMode == undefined ||
|
||||
renderMode == ol.layer.VectorTileRenderType.IMAGE ||
|
||||
renderMode == ol.layer.VectorTileRenderType.HYBRID ||
|
||||
renderMode == ol.layer.VectorTileRenderType.VECTOR,
|
||||
28); // `renderMode` must be `'image'`, `'hybrid'` or `'vector'`
|
||||
if (options.declutter && renderMode == ol.layer.VectorTileRenderType.IMAGE) {
|
||||
renderMode = ol.layer.VectorTileRenderType.HYBRID;
|
||||
}
|
||||
options.renderMode = renderMode;
|
||||
|
||||
var baseOptions = ol.obj.assign({}, options);
|
||||
|
||||
delete baseOptions.preload;
|
||||
@@ -34,24 +45,6 @@ ol.layer.VectorTile = function(opt_options) {
|
||||
this.setUseInterimTilesOnError(options.useInterimTilesOnError ?
|
||||
options.useInterimTilesOnError : true);
|
||||
|
||||
var renderMode = options.renderMode;
|
||||
|
||||
ol.asserts.assert(renderMode == undefined ||
|
||||
renderMode == ol.layer.VectorTileRenderType.IMAGE ||
|
||||
renderMode == ol.layer.VectorTileRenderType.HYBRID ||
|
||||
renderMode == ol.layer.VectorTileRenderType.VECTOR,
|
||||
28); // `renderMode` must be `'image'`, `'hybrid'` or `'vector'`
|
||||
|
||||
if (options.declutter && renderMode == ol.layer.VectorTileRenderType.IMAGE) {
|
||||
renderMode = ol.layer.VectorTileRenderType.HYBRID;
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {ol.layer.VectorTileRenderType|string}
|
||||
*/
|
||||
this.renderMode_ = renderMode || ol.layer.VectorTileRenderType.HYBRID;
|
||||
|
||||
/**
|
||||
* The layer type.
|
||||
* @protected
|
||||
@@ -74,14 +67,6 @@ ol.layer.VectorTile.prototype.getPreload = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @return {ol.layer.VectorTileRenderType|string} The render mode.
|
||||
*/
|
||||
ol.layer.VectorTile.prototype.getRenderMode = function() {
|
||||
return this.renderMode_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Whether we use interim tiles on error.
|
||||
* @return {boolean} Use interim tiles on error.
|
||||
|
||||
Reference in New Issue
Block a user