
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
leaflet-customlayer
Advanced tools
Leaflet overlay plugin: L.CustomLayer - fully custom Layer.


Using npm:
$ npm install leaflet-customlayer
or Yarn:
$ yarn add leaflet-customlayer
Using cdn:
<script type="text/javascript" src="https://unpkg.com/leaflet-customlayer@2.1.0/dist/Leaflet.CustomLayer.js"></script>
var customLayer = new L.customLayer({
container: document.createElement(element), // The DomElement object to display.
minZoom: 0, // Minimum zoom level of the layer.
maxZoom: 18, // Maximum zoom level of the layer.
opacity: 1, // Opacity of the layer.
visible: true, // Visible of the layer.
zIndex: 100 // The explicit zIndex of the layer.
});
customLayer.on("layer-beforemount", function() {
console.log("layerBeforeMount");
});
customLayer.on("layer-mounted", function() {
console.log("layerMounted");
})
customLayer.on("layer-render", function() {
console.log("layerRender");
});
customLayer.on("layer-beforedestroy", function() {
console.log("layerBeforeDestroy");
});
customLayer.on("layer-destroyed", function() {
console.log("layerDestroyed");
});
customLayer.addTo(map);
Custom canvas layer example
var canvasLayer = new L.CustomLayer({
container: document.createElement("canvas"),
padding: 0.1
});
canvasLayer.on("layer-render", function() {
var canvas = this.getContainer();
var dpr = L.Browser.retina ? 2 : 1;
var size = this._bounds.getSize();
var padding = this._padding;
// set Size
canvas.width = dpr * size.x;
canvas.height = dpr * size.y;
canvas.style.width = size.x + "px";
canvas.style.height = size.y + "px";
var ctx = canvas.getContext("2d");
// HD adaptation
if (L.Browser.retina) ctx.scale(dpr, dpr);
ctx.translate(padding.x, padding.y);
// draw
var point = this._map.latLngToContainerPoint({
lat: 39.910088,
lng: 116.401601
});
ctx.fillStyle = "rgb(0, 100, 255)";
ctx.fillRect(point.x, point.y, 100, 100);
});
canvasLayer.addTo(map);
setFullLayerBounds util usage
Automatically set the full screen container size using the setfulllayerBounds method.
var canvasLayer = new L.CustomLayer({
container: document.createElement("canvas"),
padding: 0.1
});
canvasLayer.on("layer-render", function() {
var { ctx } = this.setFullLayerBounds();
// draw
var point = this._map.latLngToContainerPoint({
lat: 39.910088,
lng: 116.401601
});
ctx.fillStyle = "rgb(0, 100, 255)";
ctx.fillRect(point.x, point.y, 100, 100);
});
canvasLayer.addTo(map);
The setfulllayerBounds method can automatically set the container size. However, due to conditional restrictions, when it is not satisfied with the usage scenario, manually set the container size.
Leaflet overlay plugin: L.CustomLayer - fully custom Layer. Extends L.Layer.
| Option | Description | Type | Default |
|---|---|---|---|
| container | The DomElement object to display. | DomElement | - |
| minZoom | Minimum zoom level of the layer. | Number | * |
| maxZoom | Maximum zoom level of the layer. | Number | * |
| opacity | Opacity of the layer. | Number | 1 |
| visible | Visible of the layer. | Boolean | true |
| zIndex | The explicit zIndex of the layer. | Number | canvas: 100\ svg: 200\ other: 100 |
| padding | How much to extend the clip area around the map view (relative to its size) e.g. 0.1 would be 10% of map view in each direction. | Number | 0 |
| tolerance | How much to extend click tolerance round a path/object on the map. | Number | 0 |
| Method | Description | Return |
|---|---|---|
| addTo() | layer add to the map | |
| remove() | layer remove the map | |
| getContainer() | Get the DomElement object | DomElement |
| setContainer(container) | Set the DomElement object | this |
| getOpacity() | Get the opacity of the layer. | Number |
| setOpacity(opacity) | Set the opacity of the layer. | this |
| getZIndex() | Get the zIndex of the layer. | Number |
| setZIndex(zIndex) | Set the zIndex of the layer. | this |
| show() | layer show | this |
| hide() | layer hide | this |
| Method | Description | Return |
|---|---|---|
| setFullLayerBounds() | set the full bounds of the layer. | { container, [...] } |
| Event | Data | Description |
|---|---|---|
| layer-beforemount | Event | Fired before the layer is mounting begins. |
| layer-mounted | Event | Fired after the layer is has been mounted. |
| layer-render | Event | Fired when the layer render its bounds, center and zoom, for example when its map has moved. |
| layer-beforedestroy | Event | Fired before the layer is destroyed. |
| layer-destroyed | Event | Fired after the layer is has been destroyed. |
FAQs
Leaflet overlay plugin: L.CustomLayer - fully custom Layer.
The npm package leaflet-customlayer receives a total of 477 weekly downloads. As such, leaflet-customlayer popularity was classified as not popular.
We found that leaflet-customlayer demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.