UNPKG

leaflet

Version:

JavaScript library for mobile-friendly interactive maps

51 lines (42 loc) 1.91 kB
import {ImageOverlay} from './ImageOverlay'; import * as DomUtil from '../dom/DomUtil'; import * as Util from '../core/Util'; /* * @class SVGOverlay * @aka L.SVGOverlay * @inherits ImageOverlay * * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`. * * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element. * * @example * * ```js * var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); * svgElement.setAttribute('xmlns', "http://www.w3.org/2000/svg"); * svgElement.setAttribute('viewBox', "0 0 200 200"); * svgElement.innerHTML = '<rect width="200" height="200"/><rect x="75" y="23" width="50" height="50" style="fill:red"/><rect x="75" y="123" width="50" height="50" style="fill:#0013ff"/>'; * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ]; * L.svgOverlay(svgElement, svgElementBounds).addTo(map); * ``` */ export var SVGOverlay = ImageOverlay.extend({ _initImage: function () { var el = this._image = this._url; DomUtil.addClass(el, 'leaflet-image-layer'); if (this._zoomAnimated) { DomUtil.addClass(el, 'leaflet-zoom-animated'); } if (this.options.className) { DomUtil.addClass(el, this.options.className); } el.onselectstart = Util.falseFn; el.onmousemove = Util.falseFn; } // @method getElement(): SVGElement // Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement) // used by this overlay. }); // @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options) // Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to. // A viewBox attribute is required on the SVG element to zoom in and out properly. export function svgOverlay(el, bounds, options) { return new SVGOverlay(el, bounds, options); }