diff options
author | Aditi <aditi.iitr@gmail.com> | 2013-06-21 23:09:22 +0530 |
---|---|---|
committer | Aditi <aditi.iitr@gmail.com> | 2013-06-21 23:09:22 +0530 |
commit | 2719d546a57c2332e36cc056ac80ec5d79672c1a (patch) | |
tree | 1f62ab8f761026d4faa5442032df133fc90d47f2 /extlib/leaflet/src/handler/MarkerDrag.js | |
parent | 1a6f065419290b3f4234ce4a89bb2c46b13e8a12 (diff) | |
parent | 92b22e7deac547835f69168f97012b52e87b6de4 (diff) | |
download | mediagoblin-2719d546a57c2332e36cc056ac80ec5d79672c1a.tar.lz mediagoblin-2719d546a57c2332e36cc056ac80ec5d79672c1a.tar.xz mediagoblin-2719d546a57c2332e36cc056ac80ec5d79672c1a.zip |
Merge remote-tracking branch 'cweb/master'
Diffstat (limited to 'extlib/leaflet/src/handler/MarkerDrag.js')
-rw-r--r-- | extlib/leaflet/src/handler/MarkerDrag.js | 54 |
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'); + } +}); |