PageSourceSearch

https://www.agesic.com/dashboard/leaflet_new/src/edit/handler/Edit.Marker.js

js agesic.com collected 2026-10-02 00:17:00 UTC 2,173 bytes, 84 lines download raw bytes

vendor: 2,173 bytes, lines 1-84
1L.Edit = L.Edit || {};
2
3/**
4 * @class L.Edit.Marker
5 * @aka Edit.Marker
6 */
7L.Edit.Marker = L.Handler.extend({
8	// @method initialize(): void
9	initialize: function (marker, options) {
10		this._marker = marker;
11		L.setOptions(this, options);
12	},
13
14	// @method addHooks(): void
15	// Add listener hooks to this handler
16	addHooks: function () {
17		var marker = this._marker;
18
19		marker.dragging.enable();
20		marker.on('dragend', this._onDragEnd, marker);
21		this._toggleMarkerHighlight();
22	},
23
24	// @method removeHooks(): void
25	// Remove listener hooks from this handler
26	removeHooks: function () {
27		var marker = this._marker;
28
29		marker.dragging.disable();
30		marker.off('dragend', this._onDragEnd, marker);
31		this._toggleMarkerHighlight();
32	},
33
34	_onDragEnd: function (e) {
35		var layer = e.target;
36		layer.edited = true;
37		this._map.fire(L.Draw.Event.EDITMOVE, {layer: layer});
38	},
39
40	_toggleMarkerHighlight: function () {
41		var icon = this._marker._icon;
42
43		// Don't do anything if this layer is a marker but doesn't have an icon. Markers
44		// should usually have icons. If using Leaflet.draw with Leaflet.markercluster there
45		// is a chance that a marker doesn't.
46		if (!icon) {
47			return;
48		}
49
50		// This is quite naughty, but I don't see another way of doing it. (short of setting a new icon)
51		icon.style.display = 'none';
52
53		if (L.DomUtil.hasClass(icon, 'leaflet-edit-marker-selected')) {
54			L.DomUtil.removeClass(icon, 'leaflet-edit-marker-selected');
55			// Offset as the border will make the icon move.
56			this._offsetMarker(icon, -4);
57
58		} else {
59			L.DomUtil.addClass(icon, 'leaflet-edit-marker-selected');
60			// Offset as the border will make the icon move.
61			this._offsetMarker(icon, 4);
62		}
63
64		icon.style.display = '';
65	},
66
67	_offsetMarker: function (icon, offset) {
68		var iconMarginTop = parseInt(icon.style.marginTop, 10) - offset,
69			iconMarginLeft = parseInt(icon.style.marginLeft, 10) - offset;
70
71		icon.style.marginTop = iconMarginTop + 'px';
72		icon.style.marginLeft = iconMarginLeft + 'px';
73	}
74});
75
76L.Marker.addInitHook(function () {
77	if (L.Edit.Marker) {
78		this.editing = new L.Edit.Marker(this);
79
80		if (this.options.editable) {
81			this.editing.enable();
82		}
83	}
84});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.