Перейти к основному содержимому

Подсказки

Чтобы показать всплывающую подсказку при наведении курсора на объект, нужно создать HTML-элемент и показывать/скрывать его в обработчиках событий mouseover и mouseout.

Подсказка для маркера

Например, чтобы добавить подсказку для маркера, нужно добавить обработчики для событий mouseover и mouseout при помощи метода on():

marker.on('mouseover', (e) => {
console.log('курсор перешёл на маркер');
});
marker.on('mouseout', (e) => {
console.log('курсор покинул маркер');
});

Основной смысл в том, чтобы показать HTML-элемент в обработчике mouseover и скрыть его в обработчике mouseout. Координаты для показа элемента можно получить через объект события (см. MapPointerEvent).

Перед показом элемент нужно скрыть и указать абсолютное позиционирование (position: absolute; или position: fixed;). Кроме этого, нужно указать для свойства pointer-events значение none или добавить небольшой отступ для элемента. Если этого не сделать, подсказка будет показана прямо под курсором, что приведет к событию mouseout, обработчик которого скроет подсказку.

Пример разметки для простой подсказки:

<style>
#tooltip {
padding: 20px 40px;
background: #fff;
display: none;
position: fixed;
pointer-events: none;
}
</style>
<div id="tooltip">Hello, world!</div>

Примера кода, который покажет подсказку при наведении курсора на маркер:

const tooltipEl = document.getElementById('tooltip');

marker.on('mouseover', (event) => {
// Отступ в пикселях
const offset = 5;

tooltipEl.style.top = `${event.point[1] + offset}px`;
tooltipEl.style.left = `${event.point[0] + offset}px`;
tooltipEl.style.display = 'block';
});

marker.on('mouseout', (e) => {
tooltipEl.style.display = 'none';
});

Полный пример кода приведён ниже. Наведите курсор на маркер, чтобы увидеть подсказку.

Подсказка для геометрической фигуры

Подсказки можно добавлять и для других типов объектов. Например, чтобы добавить подсказку для линии, нужно добавить обработчики для тех же двух событий mouseover и mouseout, которые были использованы в примере выше.

Далее приведён полный пример кода. Чтобы увидеть подсказку, наведите курсор на линию.