50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
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);
|
|
}
|