UNPKG

leaflet

Version:

JavaScript library for mobile-friendly interactive maps

72 lines (59 loc) 2.25 kB
import {ImageOverlay} from './ImageOverlay'; import * as DomUtil from '../dom/DomUtil'; import * as Util from '../core/Util'; /* * @class VideoOverlay * @aka L.VideoOverlay * @inherits ImageOverlay * * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`. * * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video) * HTML5 element. * * @example * * ```js * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm', * imageBounds = [[ 32, -130], [ 13, -100]]; * L.imageOverlay(imageUrl, imageBounds).addTo(map); * ``` */ export var VideoOverlay = ImageOverlay.extend({ // @section // @aka VideoOverlay options options: { // @option autoplay: Boolean = true // Whether the video starts playing automatically when loaded. autoplay: true, // @option loop: Boolean = true // Whether the video will loop back to the beginning when played. loop: true }, _initImage: function () { var vid = this._image = DomUtil.create('video', 'leaflet-image-layer ' + (this._zoomAnimated ? 'leaflet-zoom-animated' : '')); vid.onselectstart = Util.falseFn; vid.onmousemove = Util.falseFn; // @event load: Event // Fired when the video has finished loading the first frame vid.onloadeddata = Util.bind(this.fire, this, 'load'); if (!Util.isArray(this._url)) { this._url = [this._url]; } vid.autoplay = !!this.options.autoplay; vid.loop = !!this.options.loop; for (var i = 0; i < this._url.length; i++) { var source = DomUtil.create('source'); source.src = this._url[i]; vid.appendChild(source); } } // @method getElement(): HTMLVideoElement // Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement) // used by this overlay. }); // @factory L.videoOverlay(videoUrl: String|Array, bounds: LatLngBounds, options?: VideoOverlay options) // Instantiates an image overlay object given the URL of the video (or array of URLs) and the // geographical bounds it is tied to. export function videoOverlay(url, bounds, options) { return new VideoOverlay(url, bounds, options); }