Tooltip представляет собой небольшую всплывающую подпись, привязанную к географическому объекту на карте. В отличие от всплывающего окна (popup), tooltip отображается без обязательного клика, чаще всего по наведению курсора или при фокусе на мобильных устройствах.
Основное назначение tooltip — быстрое контекстное пояснение объекта без блокировки интерфейса карты и без необходимости активного взаимодействия.
Tooltip в Leaflet создаётся через метод bindTooltip,
который применяется к любому векторному или маркерному слою.
marker.bindTooltip("Точка интереса");
В результате текст привязывается к маркеру и отображается при взаимодействии с ним.
Tooltip может применяться к:
L.marker)L.polyline)L.polygon)L.circle,
L.rectangle)L.polygon(latlngs)
.bindTooltip("Граница района")
.addTo(map);
Tooltip поддерживает как строковый, так и HTML-контент.
marker.bindTooltip("<b>Объект</b><br>Описание");
HTML внутри tooltip интерпретируется браузером, что позволяет формировать структурированные подписи с акцентами и разметкой.
Поведение tooltip управляется объектом настроек:
marker.bindTooltip("Текст", {
direction: "top",
offset: [0, -10],
opacity: 0.9,
permanent: false,
sticky: false
});
direction Определяет расположение tooltip относительно слоя:
topbottomleftrightcenterautoauto позволяет Leaflet автоматически выбирать положение
в зависимости от границ карты.
offset Смещение tooltip относительно точки привязки:
offset: [10, -20]
Используется для точной корректировки положения при наложении элементов интерфейса.
opacity Прозрачность tooltip:
opacity: 0.7
Позволяет визуально интегрировать подпись в карту без перегрузки интерфейса.
permanent Определяет постоянное отображение tooltip:
permanent: true
В этом режиме tooltip отображается всегда, независимо от взаимодействия.
sticky Закрепляет tooltip за курсором:
sticky: true
При перемещении курсора tooltip следует за ним, оставаясь привязанным к объекту.
Tooltip можно управлять программно:
marker.openTooltip();
marker.closeTooltip();
Также доступна проверка состояния:
marker.isTooltipOpen();
Tooltip и popup в Leaflet выполняют разные функции и отличаются по поведению и уровню взаимодействия.
Popup представляет собой более тяжёлый интерфейсный элемент:
marker.bindPopup("Подробная информация");
Tooltip — облегчённый вариант:
Popup:
Tooltip:
Popup ориентирован на взаимодействие и детализацию данных, tooltip — на навигационную подсказку и визуальную идентификацию объектов без перегрузки интерфейса.
На сенсорных экранах отсутствует hover-событие, поэтому tooltip эмулируется через:
Sticky-режим часто используется для повышения читаемости на мобильных устройствах.
Tooltip может применяться не только к маркерам.
L.polyline(latlngs).bindTooltip("Маршрут");
Tooltip привязывается к центру линии или ближайшей точке взаимодействия.
L.polygon(latlngs).bindTooltip("Зона покрытия");
Tooltip отображается внутри или рядом с границей полигона.
L.circle([51.5, -0.09], 500).bindTooltip("Радиус зоны");
Tooltip можно стилизовать через CSS-классы.
marker.bindTooltip("Объект", {
className: "custom-tooltip"
});
CSS:
.custom-tooltip {
background: #1e1e1e;
color: #ffffff;
border-radius: 6px;
padding: 6px 10px;
font-size: 13px;
}
Также доступна настройка стандартных классов Leaflet:
.leaflet-tooltip.leaflet-tooltip-top.leaflet-tooltip-bottomTooltip можно изменять без пересоздания слоя:
marker.setTooltipContent("Новый текст");
Это используется при обновлении данных в реальном времени.
Tooltip поддерживает набор событий:
tooltipopentooltipclosemarker.on("tooltipopen", function () {
console.log("tooltip открыт");
});
Эти события позволяют синхронизировать поведение интерфейса с состоянием подсказок.
При плотном расположении объектов tooltip может перекрывать другие элементы карты. Для управления этим применяются:
direction: autooffsetstickyTooltip часто используется как минимальный слой визуализации данных:
При этом tooltip не предназначен для отображения сложной структуры данных, таблиц или интерактивных форм.
В интерфейсах на основе Leaflet tooltip обычно используется как первый уровень информации, тогда как popup выступает вторым уровнем детализации.
Типичная схема:
Такое разделение снижает нагрузку на карту и упрощает восприятие геоданных без перегрузки интерфейса.