mapboxgl.Marker
реализованы как простые элементы HTML <div>
. Вы можете прикрепить к ним стандартный прослушиватель событий и вручную включить всплывающее окно:
const marker = new mapboxgl.Marker({/* options */});
const markerDiv = marker.getElement();
markerDiv.addEventListener('mouseenter', () => marker.togglePopup());
markerDiv.addEventListener('mouseleave', () => marker.togglePopup());
См. Документы: https://docs.mapbox.com/mapbox-gl-js/api/#marker#getelement
РЕДАКТИРОВАТЬ: Предотвращение открытия всплывающего окна при нажатии
Я попытался провести некоторое тестирование, и единственное, что надежно работает, это вызвать marker.togglePopup()
в вашем собственном обработчике кликов
map.on('click', event => {
const target = event.originalEvent.target;
const markerWasClicked = markerDiv.contains(target);
marker.togglePopup();
});
Полный пример: https://jsfiddle.net/am2jwtzg/