goog.provide('ol.renderer.Composite'); goog.require('ol.renderer.MapRenderer'); goog.require('ol.layer.Layer'); goog.require('ol.Loc'); /** * @constructor * @param {!Element} container * @extends {ol.renderer.MapRenderer} */ ol.renderer.Composite = function(container) { goog.base(this, container); /** * @type Array. * @private */ this.renderers_ = []; }; goog.inherits(ol.renderer.Composite, ol.renderer.MapRenderer); /** * @param {Array.} layers * @param {ol.Loc} center * @param {number} resolution * @param {boolean} animate */ ol.renderer.Composite.prototype.draw = function(layers, center, resolution, animate) { }; /** * @param {ol.layer.Layer} layer */ ol.renderer.Composite.prototype.getRenderer = function(layer) { function finder(candidate) { return candidate.getLayer() === layer; } return goog.array.find(this.renderers_, finder); }; /** * @param {ol.layer.Layer} layer */ ol.renderer.Composite.prototype.createRenderer = function(layer) { }; /** * List of preferred renderer types. Layer renderers have a getType method * that returns a string describing their type. This list determines the * preferences for picking a layer renderer. * * @type {Array.} */ ol.renderer.Composite.preferredRenderers = ["svg", "canvas", "vml"]; /** * @param {ol.layer.Layer} layer * @returns {Function} */ ol.renderer.Composite.prototype.pickRendererType = function(layer) { // maps candidate renderer types to candidate renderers var types = {}; function picker(Candidate) { var supports = Candidate.isSupported() && Candidate.canRender(layer); if (supports) { types[Candidate.getType()] = Candidate; } return supports; } var Candidates = goog.array.some(ol.renderer.Composite.registry_, picker); // check to see if any preferred renderers are available var preferences = ol.renderer.Composite.preferredRenderers; var Renderer; for (var i=0, ii=preferences.length; i} * @private */ ol.renderer.Composite.registry_ = []; /** * @param {Function} Renderer */ ol.renderer.Composite.register = function(Renderer) { ol.renderer.Composite.registry_.push(Renderer); };