diff --git a/src/ol/renderer/canvas/canvastilerenderer.js b/src/ol/renderer/canvas/canvastilerenderer.js index 7055d122be..f6dd4dbaaf 100644 --- a/src/ol/renderer/canvas/canvastilerenderer.js +++ b/src/ol/renderer/canvas/canvastilerenderer.js @@ -7,8 +7,16 @@ goog.require('ol.Projection'); +/** + * @constructor + * @param {ol.renderer.Layer} layerRenderer Layer renderer. + */ ol.renderer.tile.Canvas = function(layerRenderer) { - + + /** + * @type {ol.renderer.Layer} + * @private + */ this.layerRenderer_ = layerRenderer; /** @@ -16,7 +24,7 @@ ol.renderer.tile.Canvas = function(layerRenderer) { * @private */ this.projection_; - + /** * @type {number} * @private @@ -28,7 +36,7 @@ ol.renderer.tile.Canvas = function(layerRenderer) { * @private */ this.origin_ = new ol.Coordinate(0, 0); - + /** * @type {ol.Pixel} * @private @@ -40,13 +48,13 @@ ol.renderer.tile.Canvas = function(layerRenderer) { * @private */ this.size_; - + /** * @type {CanvasContext} * @private */ this.context_; - + /** * @type {CanvasImageData} * @private @@ -55,8 +63,9 @@ ol.renderer.tile.Canvas = function(layerRenderer) { }; + /** - * @param size {Object|ol.Size} + * @param {Object|ol.Size} size Tile size. */ ol.renderer.tile.Canvas.prototype.setSize = function(size) { if (!(size instanceof ol.Size)) { @@ -65,14 +74,15 @@ ol.renderer.tile.Canvas.prototype.setSize = function(size) { this.size_ = size; if (!this.context_) { this.context_ = document.createElement('canvas').getContext('2d'); - this.pixelData_ = this.context_.createImageData(1,1).data; + this.pixelData_ = this.context_.createImageData(1, 1).data; this.pixelData[3] = 1; // opacity } goog.style.setSize(this.canvas_, size); }; + /** - * @param size {Object|ol.Coordinate} + * @param {Object|ol.Coordinate} origin Tile origin. */ ol.renderer.tile.Canvas.prototype.setOrigin = function(origin) { if (!(origin instanceof ol.Coordinate)) { @@ -82,22 +92,24 @@ ol.renderer.tile.Canvas.prototype.setOrigin = function(origin) { this.originPixel_ = this.layerRenderer_.getPixelFromCoordinate(origin); }; + /** - * @param resolution {number} + * @param {number} resolution Tile resolution. */ ol.renderer.tile.Canvas.prototype.setResolution = function(resolution) { this.resolution_ = resolution; }; -/* - * @param geoJson {Object|Array} GeoJSON or an array of GeoJSON features - * @param projection {ol.Projection=} + +/** + * @param {Object|Array} geoJson GeoJSON or an array of GeoJSON features. + * @param {ol.Projection=} opt_projection Projection. */ -ol.renderer.tile.Canvas.prototype.render = function(geoJson, projection) { +ol.renderer.tile.Canvas.prototype.render = function(geoJson, opt_projection) { var map = this.map; this.projection_ = map.getProjection(); this.resolution_ = map.getResolution(); - + var features; if (goog.isArray(geoJson)) { features = geoJson; @@ -106,49 +118,67 @@ ol.renderer.tile.Canvas.prototype.render = function(geoJson, projection) { } else if (geoJson.type === 'Feature') { features = [geoJson]; } - + if (features) { //FIXME Support geometry level projections - projection = projection || new ol.Projection('EPSG:4326'); - if (!(projection instanceof ol.Projection)) { - projection = new ol.Projection(projection); + // @type {ol.Projection} + var projection; + if (goog.isDef(opt_projection)) { + projection = opt_projection; + } else { + projection = new ol.Projection('EPSG:4326'); } - for (var i=0, ii=features.length; i