leaflet.maskhalo
Version:
A Leaflet plugin for creating halo effects around GeoJSON features with masking capabilities
77 lines (73 loc) • 1.97 kB
TypeScript
import * as L from 'leaflet';
import { FeatureCollection, Feature } from 'geojson';
declare global {
interface Window {
L?: typeof L;
}
namespace L {
type HaloData = FeatureCollection<GeoJSON.Polygon | GeoJSON.MultiPolygon> | Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon> | Feature<GeoJSON.Polygon | GeoJSON.MultiPolygon>[] | GeoJSON.Polygon | GeoJSON.MultiPolygon | GeoJSON.Polygon[] | GeoJSON.MultiPolygon[];
interface MaskHaloOptions {
mask?: L.PathOptions;
halo?: L.PathOptions;
}
class MaskHalo extends L.FeatureGroup {
constructor(data: HaloData, options?: L.MaskHaloOptions);
setHalo(data: HaloData): MaskHalo;
}
interface Map {
maskHalo(data: HaloData, options?: MaskHaloOptions): MaskHalo;
}
function maskHalo(data: HaloData, options?: MaskHaloOptions): MaskHalo;
}
}
/**
* Leaflet MaskHalo
* @class
* @param {L.Map} map - Leaflet map instance
* @param {Object} options - Leaflet MaskHalo options
*
* @example
*
* ```
* import L from "leaflet";
* import "leaflet.maskhalo";
*
* const maskHalo = L.maskHalo(data, {
mask: {
fillColor: "#000",
fillOpacity: 0.4,
},
halo: {
color: "#165DFF",
weight: 3,
},
});
*
* maskHalo.addTo(map);
*
* // 清除
* maskHalo.clearLayers()
* // 移除当前的
* maskHalo.remove()
* ```
*/
declare class MaskHalo extends L.FeatureGroup {
private _options;
private _halo;
private _mask;
constructor(data: L.HaloData, options?: L.MaskHaloOptions);
/**
* Add halo to the map
*
* @param data GeoJSON data
*
*/
_createLayers(data: L.HaloData): void;
/**
* Remove the mask layer.
*
*/
setHalo(data: L.HaloData): this;
}
declare function maskHalo(data: L.HaloData, options?: L.MaskHaloOptions): L.MaskHalo;
export { MaskHalo, maskHalo };