Spaces:
Running
Running
| /** | |
| * @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); | |
| } | |
| }); | |