mirror of
https://github.com/mickael-kerjean/filestash
synced 2025-12-06 16:32:31 +01:00
118 lines
2.9 KiB
JavaScript
118 lines
2.9 KiB
JavaScript
/**
|
|
* @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);
|
|
}
|
|
});
|