Skip to content

a draggable polyline react-leaflet component for editing driving directions.

License

Notifications You must be signed in to change notification settings

manufont/react-leaflet-draggable-polyline

Repository files navigation

Leaflet Draggable Polyline

A draggable polyline to use with react-leaflet. This may be useful if you need to edit a polyline provided by a driving directions api (such as google maps javascript api DirectionsService).

desktop demo mobile demo

Demo & Examples

Example with ordered new waypoints

Basic example with no ordering

Example using google maps directions

Installation

npm i -S react-leaflet-draggable-polyline

Usage

DraggablePolyline uses React context API. It needs to be nested inside a react-leaflet Map.

import DraggablePolyline from 'react-leaflet-draggable-polyline';

<DraggablePolyline
	positions={[[43.60, 1.44], [43.61, 1.30]]}
/>

For a fully working example, please check out this one.

Properties

This component extends all react-leaflet polyline properties.

Name Type Default Description
positions array[array[float]] or array[array[array[float]]] The polyline positions formatted as [lat, lng] arrays. If an array of positions is provided, every new waypoint will be reordered according to the positions array it has been dragged from
waypoints array[array[float]] [] The waypoints formatted as [lat, lng] arrays
onWaypointsChange function(waypoints, index) The callback that fires after every change in waypoints array. The index parameter represent the index of the changed waypoint.
onWaypointAdd function(waypoint) The callback that fires after a waypoint has been added.
onWaypointRemove function(waypoint, index) The callback that fires after a waypoint has been removed. The index parameter represent the index of the removed waypoint.
onWaypointMove function(waypoint, index) The callback that fires after a waypoint has been moved. The index parameter represent the index of the moved waypoint.
mouseOverWaypointIcon leaflet icon The icon that shows on polyline mouseover
draggableWaypointIcon leaflet icon The draggable waypoints icon
weight number 10 The weight of the polyline. It needs to be large enough to enable touch events on a mobile device.

Development (src, lib and the build process)

To build the examples locally, run:

npm install
npm start

Then open localhost:8000 in a browser.

NOTE: The source code for the component is in src. A transpiled CommonJS version (generated with Babel) is available in lib for use with node.js, browserify and webpack. A UMD bundle is also built to dist, which can be included without the need for any build system.

To build, watch and serve the examples (which will also watch the component source), run npm start. If you just want to watch changes to src and rebuild lib, run npm run watch (this is useful if you are working with npm link).

License

MIT