Shows a text along a Polyline.
Check out the demo !
The version on the gh-pages branch targets Leaflet 1.3.1.
For example, show path orientation on mouse over :
var layer = L.polyLine(...);
layer.on('mouseover', function () {
this.setText(' ► ', {repeat: true, attributes: {fill: 'red'}});
});
layer.on('mouseout', function () {
this.setText(null);
});With a GeoJSON containing lines, it becomes:
L.geoJson(data, {
onEachFeature: function (feature, layer) {
layer.setText(feature.properties.label);
}
}).addTo(map);You can also apply attributes only to parts of the text, e.g. to create multi colored labels:
layer.setText([
{ fill: 'red', text: 'Red' },
' '
{ style: 'fill: blue', text: 'Blue' }
])The text parameter of setText() can either be:
- A string: use this string as label
- An object: use value of key 'text' as content (which can be either string, object or array), other key/value pairs as attributes for a
tspanSVG node. - An array: The label consists of several parts, where each part can either be a string, an object or an array.
-
repeatSpecifies if the text should be repeated along the polyline (Default:false). Specifyrepeatas float to set the distance between each repetition in pixels (will be approximated by spaces). -
centerCenters the text according to the polyline's bounding box (Default:false) -
belowShow text below the path (Default: false) -
offsetSet an offset to position text relative to the polyline (Default: width of stroke) -
orientationRotate text. (Default: 0)- {orientation: angle} - rotate to a specified angle (e.g. {orientation: 15})
- {orientation: flip} - flips the text 180deg correction for upside down text placement on west -> east lines
- {orientation: perpendicular} - places text at right angles to the line.
- {orientation: auto} - flips the text on (part of) ways running west to east, so that they are readable upside down.
-
allowCropIf the line is too short to display the whole text, crop the text. If false, don't show the text at all. (Default: true). -
turnedTextWhen orientation=auto is used, use this text for east -> west lines. -
attributesObject containing the attributes applied to thetexttag. Check valid attributes here (Default:{})
The main idea comes from Tom Mac Wright's Getting serious about SVG
- Nothing changed yet.
- Add the orientation option (#27, thanks @kirkau)
- Allow HTTP and HTTPS to access the demo (#39, thanks @sonny89 and @leplatrem)
- Fix text centering for vertical lines (#33, #34, #38, thanks @msgoloborodov)
Breaking changes
- Text is now shown on top by default. Set option
belowto true to put the text below the layer.
- Fix bug when removing layer whose text was removed (fixes #18) (thanks Victor Gomes)
- Fix path width when using options.center (fixes #17) (thanks Brent Miller).
- Fix layer order (fixes #5) (thanks Albin Larsson)
- Stay on top after bringToFront
- Clean-up and fix
onAddandonRemove - Fire mouse events from underlying text layer (thanks Lewis Christie)
- Initial working version
Many thanks to all contributors !

