Enables snapping of draggable markers to polylines and other layers
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 31 commits behind makinacorpus:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Leaflet.GeometryUtil @ 0f04b78
Leaflet.draw @ 21a911a
.gitmodules
LICENSE
README.md
index.html
leaflet.snap.js
marker-snap.png
package.json

README.md

Leaflet.Snap

Enables snapping of draggable markers to polylines and other layers !

Check out the demo !

It depends on Leaflet.GeometryUtil.

For snapping on shape drawing or edition snapping, it also depends on Leaflet.draw.

If your guide layer contains several thousands for features, adding the LayerIndex is recommended, this plugin takes advantage of the spatial index if it is available.

Usage

  • Add leaflet.snap.js and leaflet.geometryutil.js (optionally leaflet.draw.js)

For markers :

    var guideLayer = ...;

    var marker = L.marker([48.488, 1.395]).addTo(map);
        marker.snapediting = new L.Handler.MarkerSnap(map, marker);
        marker.snapediting.addGuideLayer(guideLayer);
        marker.snapediting.enable();

For Leaflet.Draw :

    var guideLayers = [guides, road];

    map.drawControl.setDrawingOptions({
        polyline: { guideLayers: guideLayers },
        polygon: { guideLayers: guideLayers, snapDistance: 5 },
    });

For editing existing polylines :

    var polyline = L.polyline(...).addTo(map);
        polyline.snapediting = new L.Handler.PolylineSnap(map, polyline);
        polyline.snapediting.addGuideLayer(guideLayer);
        polyline.snapediting.enable();

Both L.Handler.MarkerSnap and L.Handler.PolylineSnap accept options as a third argument.

Options:

snapDistance : (default 15) distance in pixels where snapping occurs

snapVertices : (default true) whether layers vertices add additional snap attraction

Events :

snap ( layer, latlng ) : fired when snapped to layer at latlng

unsnap ( layer ) : fired when unsnapped from layer

CHANGELOG

dev

  • Add snapping while drawing in Leaflet.Draw

0.0.2

  • Disable snapping when the feature is deleted

0.0.1

  • Fix Snaping if guide layer has Leaflet.LayerIndex

TODO

  • Add init hooks to simplify initialization

Authors

  • Mathieu Leplatre
  • Tobias Bieniek
  • Frédéric Bonifas

Makina Corpus