/** * @class L.Control.Draw * @aka L.Draw */ L.Control.Draw = L.Control.extend({ // Options options: { position: 'topleft', draw: {}, edit: false }, // @method initialize(): void // Initializes draw control, toolbars from the options initialize: function (options) { if (L.version < '0.7') { throw new Error('Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/'); } L.Control.prototype.initialize.call(this, options); var toolbar; this._toolbars = {}; // Initialize toolbars if (L.DrawToolbar && this.options.draw) { toolbar = new L.DrawToolbar(this.options.draw); this._toolbars[L.DrawToolbar.TYPE] = toolbar; // Listen for when toolbar is enabled this._toolbars[L.DrawToolbar.TYPE].on('enable', this._toolbarEnabled, this); } if (L.EditToolbar && this.options.edit) { toolbar = new L.EditToolbar(this.options.edit); this._toolbars[L.EditToolbar.TYPE] = toolbar; // Listen for when toolbar is enabled this._toolbars[L.EditToolbar.TYPE].on('enable', this._toolbarEnabled, this); } L.toolbar = this; //set global var for editing the toolbar }, // @method onAdd(): container // Adds the toolbar container to the map onAdd: function (map) { var container = L.DomUtil.create('div', 'leaflet-draw'), addedTopClass = false, topClassName = 'leaflet-draw-toolbar-top', toolbarContainer; for (var toolbarId in this._toolbars) { if (this._toolbars.hasOwnProperty(toolbarId)) { toolbarContainer = this._toolbars[toolbarId].addToolbar(map); if (toolbarContainer) { // Add class to the first toolbar to remove the margin if (!addedTopClass) { if (!L.DomUtil.hasClass(toolbarContainer, topClassName)) { L.DomUtil.addClass(toolbarContainer.childNodes[0], topClassName); } addedTopClass = true; } container.appendChild(toolbarContainer); } } } return container; }, // @method onRemove(): void // Removes the toolbars from the map toolbar container onRemove: function () { for (var toolbarId in this._toolbars) { if (this._toolbars.hasOwnProperty(toolbarId)) { this._toolbars[toolbarId].removeToolbar(); } } }, // @method setDrawingOptions(options): void // Sets options to all toolbar instances setDrawingOptions: function (options) { for (var toolbarId in this._toolbars) { if (this._toolbars[toolbarId] instanceof L.DrawToolbar) { this._toolbars[toolbarId].setOptions(options); } } }, _toolbarEnabled: function (e) { var enabledToolbar = e.target; for (var toolbarId in this._toolbars) { if (this._toolbars[toolbarId] !== enabledToolbar) { this._toolbars[toolbarId].disable(); } } } }); L.Map.mergeOptions({ drawControlTooltips: true, drawControl: false }); L.Map.addInitHook(function () { if (this.options.drawControl) { this.drawControl = new L.Control.Draw(); this.addControl(this.drawControl); } });