Я хочу добиться эффекта плавного перехода при наведении курсора мыши. То же (похоже), что и всплывающее окно. Я уже рассмотрел это с помощью следующего кода:
var i, j, k = 0;
var opaOn = 0.5;
var opaOff = 1.0;
var waitInterval=20;
var marker1 = L.marker([54.351194, 18.644001], {
title: "F-25",
opacity: opaOn
})
.addTo(map)
.on('mouseover', function(e) {
localName = 'Marker 1';
popupName.setContent(localName);
this.openPopup();
for (let i = 1; i <= (1.0 - opaOn) * 10; i++) {
setTimeout(function timer() {
j = ((i / 10) + opaOn);
marker1.setOpacity(j);
popupMaster.setContent("Value: " + j);
}, i * waitInterval);
}
})
.on('mouseout', function(e) {
this.closePopup();
for (let i = 1; i <= (j - opaOn) * 10; i++) {
setTimeout(function timer() {
k = (opaOff - (i / 10));
marker1.setOpacity(k);
popupMaster.setContent("Value: " + k);
}, i * waitInterval);
}
})
.on('click', function(e) {
popupMaster.setContent('hello');
})
.bindPopup(popupName);
Это некоторые из версий, которые я пробовал раньше, это довольно грязно, но идея в том, что он добавляет 0,1 непрозрачности каждые 20 мс (waitInterval ) от 0,5 (opaOn) до 1,0 (opaOff) при наведении мыши и выполнении обратной операции при наведении мыши.
Проблема в том, что когда мышь быстро пересекает маркер, непрозрачность нарушается. Я знаю, почему это происходит, так как 'mouseover' l oop не удалось завершить sh до запуска 'mouseout', поэтому 'mouseover' все еще добавляет значение, в то время как 'mouseout' пытается вычесть его. Я пытался добавить логический триггер, и если условие, что один не может быть выполнен, если другой не завершен sh. Я попытался добавить setTimeout () для 'mouseout', чтобы он автоматически ждал некоторое время, а затем начал делать вычитание - не повезло. Я пробовал еще несколько других вариантов, но всегда был небольшой пробел, позволяющий «сценарию» обработать sh.
Я читал об асинхронных функциях / событиях, но не смог реализовать его как-нибудь в моем проекте.
Каждое немного помогает парням, заранее спасибо!
Мой проект в скрипке