Sha256: 2c3f0f202803ab9c5d1005be776c018357c941543eb67d2981ac3481405a8cfc

Contents?: true

Size: 1.51 KB

Versions: 8

Compression:

Stored size: 1.51 KB

Contents

/*
 * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable.
 */

L.Handler.MarkerDrag = L.Handler.extend({
	initialize: function (marker) {
		this._marker = marker;
	},

	addHooks: function () {
		var icon = this._marker._icon;
		if (!this._draggable) {
			this._draggable = new L.Draggable(icon, icon);
		}

		this._draggable
			.on('dragstart', this._onDragStart, this)
			.on('drag', this._onDrag, this)
			.on('dragend', this._onDragEnd, this);
		this._draggable.enable();
		L.DomUtil.addClass(this._marker._icon, 'leaflet-marker-draggable');
	},

	removeHooks: function () {
		this._draggable
			.off('dragstart', this._onDragStart, this)
			.off('drag', this._onDrag, this)
			.off('dragend', this._onDragEnd, this);

		this._draggable.disable();
		L.DomUtil.removeClass(this._marker._icon, 'leaflet-marker-draggable');
	},

	moved: function () {
		return this._draggable && this._draggable._moved;
	},

	_onDragStart: function () {
		this._marker
		    .closePopup()
		    .fire('movestart')
		    .fire('dragstart');
	},

	_onDrag: function () {
		var marker = this._marker,
		    shadow = marker._shadow,
		    iconPos = L.DomUtil.getPosition(marker._icon),
		    latlng = marker._map.layerPointToLatLng(iconPos);

		// update shadow position
		if (shadow) {
			L.DomUtil.setPosition(shadow, iconPos);
		}

		marker._latlng = latlng;

		marker
		    .fire('move', {latlng: latlng})
		    .fire('drag');
	},

	_onDragEnd: function (e) {
		this._marker
		    .fire('moveend')
		    .fire('dragend', e);
	}
});

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
leaflet-js-0.7.9 vendor/assets/Leaflet/src/layer/marker/Marker.Drag.js
leaflet-js-0.7.8 vendor/assets/Leaflet/src/layer/marker/Marker.Drag.js
leaflet-js-0.7.7 vendor/assets/Leaflet/src/layer/marker/Marker.Drag.js
leaflet-js-0.7.0.4 lib/leaflet/src/layer/marker/Marker.Drag.js
leaflet-js-0.7.0.3 lib/leaflet/src/layer/marker/Marker.Drag.js
leaflet-js-0.7.0.2 lib/leaflet/src/layer/marker/Marker.Drag.js
leaflet-js-0.7.0.1 lib/leaflet/src/layer/marker/Marker.Drag.js
leaflet-js-0.7.0 lib/leaflet/src/layer/marker/Marker.Drag.js