web gl renderer plugin for leaflet in typescript
Pronounced leaflet-G.L.-Ify, or leaflet-glify, or L.-G.L.-Ify, or L-glify, or elglify
inspired by http://bl.ocks.org/Sumbera/c6fed35c377a46ff74c3 & need.
<script src="dist/glify-browser.js"></script>
<script>
// namespace
L.glify
</script>
import glify from 'leaflet.glify';
const { glify } = require('leaflet.glify');
L.glify.shapes({
map,
data: geoJson,
click: (e, feature): boolean | void => {
// do something when a shape is clicked
// return false to continue traversing
},
hover: (e, feature): boolean | void => {
// do something when a shape is hovered
}
});
L.glify.points({
map,
data: pointsOrGeoJson,
click: (e, pointOrGeoJsonFeature, xy): boolean | void => {
// do something when a point is clicked
// return false to continue traversing
},
hover: (e, pointOrGeoJsonFeature, xy): boolean | void => {
// do something when a point is hovered
}
});
L.glify.lines({
map: map,
data: geojson,
size: 2,
click: (e, feature): boolean | void => {
// do something when a line is clicked
// return false to continue traversing
},
hover: (e, feature): boolean | void => {
// do something when a line is hovered
},
hoverOff: (e, feature): boolean | void => {
// do something when a line is hovered off
},
});
L.glify.shapes
Optionsmap
{Object}
required leaflet mapdata
{Object}
required geojson datavertexShaderSource
{String|Function}
optional glsl vertex shader source, defaults to use L.glify.shader.vertex
fragmentShaderSource
{String|Function}
optional glsl fragment shader source, defaults to use L.glify.shader.fragment.polygon
click
{Function}
optional event handler for clicking a shapehover
{Function}
optional event handler for hovering a shapecolor
{Function|Object|String}
optional, default is 'random'color
is a Function
its arguments are the index
:number
and the feature
:object
that is being colored, opacity can optionally be included as { a: number }
.
The result should be of interface IColor
, example: {r: number, g: number, b: number, a: number }
.opacity
{Number}
a value from 0 to 1, default is 0.5. Only used when opacity isn't included on color.className
{String}
a class name applied to canvas, default is ''border
{Boolean}
optional, default false
. When set to true
, a border with an opacity of settings.borderOpacity
is displayed.borderOpacity
{Number}
optional, default false
. Border opacity for when settings.boarder
is true
. Default is 1.preserveDrawingBuffer
{Boolean}
optional, default 1
, adjusts the border opacity separate from opacity
.pane
{String}
optional, default is overlayPane
. Can be set to a custom pane.L.glify.points
Optionsmap
{Object}
required leaflet mapdata
{Object}
required geojson datavertexShaderSource
{String|Function}
optional glsl vertex shader source, defaults to use L.glify.shader.vertex
fragmentShaderSource
{String|Function}
optional glsl fragment shader source, defaults to use L.glify.shader.fragment.point
click
{Function}
optional event handler for clicking a pointhover
{Function}
optional event handler for hovering a pointcolor
{Function|Object|String}
optional, default is 'random'color
is a Function
its arguments are the index
:number
and the point
:array
that is being colored, opacity can optionally be included as { a: number }
.
The result should be of interface IColor
, example: {r: number, g: number, b: number, a: number }
.opacity
{Number}
a value from 0 to 1, default is 0.8. Only used when opacity isn't included on color.className
{String}
a class name applied to canvas, default is ''size
{Number|Function}
pixel size of pointsize
is a Function
its arguments are index
:number
, and the point
:array
that is being sizedsensitivity
{Number}
exaggerates the size of the clickable area to make it easier to click a pointsensitivityHover
{Number}
exaggerates the size of the hoverable area to make it easier to hover a pointpreserveDrawingBuffer
{Boolean}
optional, default false
, perverse draw buffer on webgl context.pane
{String}
optional, default is overlayPane
. Can be set to a custom pane.L.glify.lines
Optionsmap
{Object}
required leaflet mapdata
{Object}
required geojson datavertexShaderSource
{String|Function}
optional glsl vertex shader source, defaults to use L.glify.shader.vertex
fragmentShaderSource
{String|Function}
optional glsl fragment shader source, defaults to use L.glify.shader.fragment.point
click
{Function}
optional event handler for clicking a linehover
{Function}
optional event handler for hovering a linehoverOff
{Function}
optional event handler for hovering off a linecolor
{Function|Object|String}
optional, default is 'random'color
is a Function
its arguments are the index
:number
and the feature
:object
that is being colored, opacity can optionally be included as { a: number }
.
The result should be of interface IColor
, example: {r: number, g: number, b: number, a: number }
.opacity
{Number}
a value from 0 to 1, default is 0.5. Only used when opacity isn't included on color.className
{String}
a class name applied to canvas, default is ''sensitivity
{Number}
exaggerates the size of the clickable area to make it easier to click a linesensitivityHover
{Number}
exaggerates the size of the hoverable area to make it easier to hover a linepreserveDrawingBuffer
{Boolean}
optional, default false
, perverse draw buffer on webgl context.weight
{Number|Function}
a value in pixels of how thick lines should be drawnweight
is a Function
its arguments are gets the index
:number
, and the feature
:object
that is being drawnpane
{String}
optional, default is overlayPane
. Can be set to a custom pane.L.glify
methods/propertieslongitudeFirst()
latitudeFirst()
pointsInstances
linesInstances
shapesInstances
points(options)
shapes(options)
lines(options)
There are two ways to package this application: Parcel and WebPack.
You can build the parcel version by running yarn run build-browser
You can build the webpack version by running yarn run build-browser-webpack
Use yarn serve
Use yarn test
L.glify instances can be updated using the update(data, index)
method.
data
{Object}
Lines and Shapes require a single GeoJSON feature. Points require the same data structure as the original object and therefore also accept an array of coordinates.index
{number}
An integer indicating the index of the element to be updated.An object or some elements of an object are removed using the remove(index)
method.
index
{number|Array}
optional - An integer or an array of integers specifying the indices of the elements to be removed.
If index
is not defined, the entire object is removed.This project exists thanks to all the people who contribute. [Contribute].
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
Version | Tag | Published |
---|---|---|
3.2.0 | latest | 2yrs ago |