Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/zakjan/leaflet-lasso

Lasso selection plugin for Leaflet
https://github.com/zakjan/leaflet-lasso

Last synced: 3 months ago
JSON representation

Lasso selection plugin for Leaflet

Awesome Lists containing this project

README

        

# leaflet-lasso

[![](https://img.shields.io/npm/dm/leaflet-lasso)](https://www.npmjs.com/package/leaflet-lasso)
[![](https://img.shields.io/david/zakjan/leaflet-lasso)](https://www.npmjs.com/package/leaflet-lasso)
[![](https://img.shields.io/bundlephobia/min/leaflet-lasso)](https://www.npmjs.com/package/leaflet-lasso)

Lasso selection plugin for Leaflet

[Demo](https://zakjan.github.io/leaflet-lasso/)

Screenshot

Supports all Leaflet vector layers:

- Marker
- CircleMarker
- Circle
- Polyline
- Polyline with multiple segments
- Rectangle
- Polygon
- Polygon with hole
- Polygon with multiple segments
- Polygon with multiple segments and holes
- Custom layers can be supported if they inherit from the above layers, and have `getBounds` and `toGeoJSON` methods

Selection modes:

- contain - entire shape must be in lasso polygon (default)
- intersect - any part of shape can be in lasso polygon

## Install

```
npm install leaflet-lasso
```

or

```

```

## Usage

```
import "leaflet-lasso";
```

For detailed API, please see exported TypeScript typings.

### Handler

Use for custom activation.

```
interface LassoHandlerOptions {
polygon?: L.PolylineOptions,
intersect?: boolean;
}
```

```
const lasso = L.lasso(map, options);
yourCustomButton.addEventListener('click', () => {
lasso.enable();
});
```

### Control

Use for default control.

```
interface LassoControlOptionsData {
title?: string;
}

type LassoControlOptions = L.ControlOptions & LassoControlOptionsData & LassoHandlerOptions;
```

```
L.control.lasso(options).addTo(map);
```

### Finished event

Listen for this event to receive matching Leaflet layers.

```
interface LassoHandlerFinishedEventData {
originalEvent: MouseEvent;
latLngs: L.LatLng[];
layers: L.Layer[];
}

type LassoHandlerFinishedEvent = L.LeafletEvent & LassoHandlerFinishedEventData;
```

```
map.on('lasso.finished', (event: LassoHandlerFinishedEvent) => {
console.log(event.layers);
});
```

## Thanks

Icon by @Falke-Design