A client-side implementation of @CartoDB's idea of a stacked chips symbolizer.
This is composed of two parts:
L.Marker.Stack
allows displaying severalL.Icon
s on a stack top of each other, at the sameL.LatLng
.L.Icon.Chip
is a ellipse-shapedL.Icon
.
Behaves like a L.Marker
, but has the following options:
icons
: Must be anArray
ofL.Icon
s. The order of the icons in the array defines the stacking order. This deprecates theicon
property.stackOffset
: An instance ofL.Point
. Defines how many pixels each icon is offset from the previous one. The default is[0, -5]
, which means each icon is offset 5 pixels vertically towards the top (it is possible to make downward-facing stacks).stackZOffset
: An integer, affecting the z-index of the icons. Positive values display the last icon on top, negative values display the first icon on top. The default is a positive 1.
Behaves like a L.DivIcon
, but has the following extra options:
border
: A CSS definition theborder
property. Defaults to"#888 solid 1px"
.color
: A CSS color definition. Defaults to"blue"
.iconSize
: Defaults to[12, 8]
. Change it to make the ellipse bigger or smaller.iconAnchor
: Defaults to[6, 4]
(the center of the ellipse).
var stack = L.marker.stack(myCenter, {
icons: [
L.icon.chip({ color: 'red' }),
L.icon.chip({ color: 'red' }),
L.icon.chip({ color: 'blue' }),
L.icon.chip({ color: 'lime' }),
],
stackOffset: [0, -5]
});
map.addLayer(stack);
Check out the live demos:
"THE BEER-WARE LICENSE": [email protected] wrote this file. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.