UNPKG

leaflet

Version:

JavaScript library for mobile-friendly interactive maps

47 lines (40 loc) 1.56 kB
import {Map} from '../../map/Map.js'; import {Canvas} from './Canvas.js'; import {SVG} from './SVG.js'; Map.include({ // @namespace Map; @method getRenderer(layer: Path): Renderer // Returns the instance of `Renderer` that should be used to render the given // `Path`. It will ensure that the `renderer` options of the map and paths // are respected, and that the renderers do exist on the map. getRenderer(layer) { // @namespace Path; @option renderer: Renderer // Use this specific instance of `Renderer` for this path. Takes // precedence over the map's [default renderer](#map-renderer). // If set, it will override the `pane` option of the path. let renderer = layer.options.renderer ?? this._getPaneRenderer(layer.options.pane) ?? this.options.renderer ?? this._renderer; if (!renderer) { renderer = this._renderer = this._createRenderer(); } if (!this.hasLayer(renderer)) { this.addLayer(renderer); } return renderer; }, _getPaneRenderer(name) { if (name === 'overlayPane' || name === undefined) { return; } let renderer = this._paneRenderers[name]; if (renderer === undefined) { renderer = this._createRenderer({pane: name}); this._paneRenderers[name] = renderer; } return renderer; }, _createRenderer(options) { // @namespace Map; @option preferCanvas: Boolean = false // Whether `Path`s should be rendered on a `Canvas` renderer. // By default, all `Path`s are rendered in a `SVG` renderer. return (this.options.preferCanvas && new Canvas(options)) || new SVG(options); } });