Leaflet 1.0.0 has a new built-in L.tooltip
class that deprecates the Leaflet.label plugin. The tooltip points at the shape center and does not move with the mouse.
L.polygon(coords).bindTooltip("my tooltip").addTo(map);
Demo:
var map = L.map("map");
L.tileLayer("http://{s}.tile.osm.org/{z}/{x}/{y}.png").addTo(map);
map.setView([48.85, 2.35], 12);
//L.circle([48.85, 2.35], {radius: 1000}).bindTooltip("test").addTo(map);
L.rectangle([
[48.84, 2.34],
[48.86, 2.36]
]).bindTooltip("test").addTo(map);
html, body, #map {
height: 100%;
margin: 0;
}
<script src="https://unpkg.com/leaflet@1.0.0/dist/leaflet.js"></script>
<link href="https://unpkg.com/leaflet@1.0.0/dist/leaflet.css" rel="stylesheet" />
<div id="map"></div>
To address OP's comment about tooltip being displayed at the polygon center, which can be out of view when the polygon is very big and current zoom is high, you can use the sticky
option:
L.polygon(coords).bindTooltip("my tooltip", {
sticky: true // If true, the tooltip will follow the mouse instead of being fixed at the feature center.
}).addTo(map);
Updated demo:
var map = L.map("map");
L.tileLayer("http://{s}.tile.osm.org/{z}/{x}/{y}.png").addTo(map);
map.setView([48.85, 2.35], 12);
//L.circle([48.85, 2.35], {radius: 1000}).bindTooltip("test").addTo(map);
L.rectangle([
[48.84, 2.34],
[48.86, 2.36]
]).bindTooltip("test", {
sticky: true
}).addTo(map);
html, body, #map {
height: 100%;
margin: 0;
}
<script src="https://unpkg.com/leaflet@1.0.0/dist/leaflet.js"></script>
<link href="https://unpkg.com/leaflet@1.0.0/dist/leaflet.css" rel="stylesheet" />
<div id="map"></div>