aboutsummaryrefslogtreecommitdiffstats
path: root/extlib/leaflet/src/handler/MarkerDrag.js
diff options
context:
space:
mode:
authorJoar Wandborg <git@wandborg.com>2012-01-28 18:47:01 +0100
committerJoar Wandborg <git@wandborg.com>2012-01-28 18:47:01 +0100
commit3d0d3bc97270095fae5f9a2508068631c46a5e61 (patch)
tree76778fcacaae35fc5662f276dab512a07bcee186 /extlib/leaflet/src/handler/MarkerDrag.js
parentd7bec8577ea1b4d83df097f586324445fed1ef50 (diff)
parent9542a2ba076b7e00e79d7adb1a4e90a095427645 (diff)
downloadmediagoblin-3d0d3bc97270095fae5f9a2508068631c46a5e61.tar.lz
mediagoblin-3d0d3bc97270095fae5f9a2508068631c46a5e61.tar.xz
mediagoblin-3d0d3bc97270095fae5f9a2508068631c46a5e61.zip
Merge remote-tracking branch 'joar/exif-rebase'
Diffstat (limited to 'extlib/leaflet/src/handler/MarkerDrag.js')
-rw-r--r--extlib/leaflet/src/handler/MarkerDrag.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/extlib/leaflet/src/handler/MarkerDrag.js b/extlib/leaflet/src/handler/MarkerDrag.js
new file mode 100644
index 00000000..8e884d50
--- /dev/null
+++ b/extlib/leaflet/src/handler/MarkerDrag.js
@@ -0,0 +1,54 @@
+/*
+ * 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;
+ },
+
+ enable: function() {
+ if (this._enabled) { return; }
+ if (!this._draggable) {
+ this._draggable = new L.Draggable(this._marker._icon, this._marker._icon);
+ this._draggable.on('dragstart', this._onDragStart, this);
+ this._draggable.on('drag', this._onDrag, this);
+ this._draggable.on('dragend', this._onDragEnd, this);
+ }
+ this._draggable.enable();
+ this._enabled = true;
+ },
+
+ disable: function() {
+ if (!this._enabled) { return; }
+ this._draggable.disable();
+ this._enabled = false;
+ },
+
+ moved: function() {
+ return this._draggable && this._draggable._moved;
+ },
+
+ _onDragStart: function(e) {
+ this._marker.closePopup();
+
+ this._marker.fire('movestart');
+ this._marker.fire('dragstart');
+ },
+
+ _onDrag: function(e) {
+ // update shadow position
+ var iconPos = L.DomUtil.getPosition(this._marker._icon);
+ L.DomUtil.setPosition(this._marker._shadow, iconPos);
+
+ this._marker._latlng = this._marker._map.layerPointToLatLng(iconPos);
+
+ this._marker.fire('move');
+ this._marker.fire('drag');
+ },
+
+ _onDragEnd: function() {
+ this._marker.fire('moveend');
+ this._marker.fire('dragend');
+ }
+});