Я использовал Mapbox JS API для отображения координат. Это ссылка на документ: https://docs.mapbox.com/mapbox-gl-js/example/mouse-position/
У меня есть две кнопки. После того, как я нажимаю на первый, при наведении мыши на карту отображаются координаты.
Что я хочу сделать, так это то, что после того, как я нажму вторую кнопку, предыдущая работающая функция может завершиться. Вы можете помочь мне в этом?
function showCor() {
map.on('mousemove', function (e) {
document.getElementById('coord-info-lat').innerHTML =
JSON.stringify(e.lngLat.lat.toFixed(5));
document.getElementById('coord-info-lng').innerHTML =
JSON.stringify(e.lngLat.lng.toFixed(5));
});
}
function notShowCor() {
// Please help me here.
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Сразу же я могу придумать 2 варианта, которые могут вам помочь;
1. Измените html на равный ""
function notShowCor() {
map.on('mousemove', function (e) {
document.getElementById('coord-info-lat').innerHTML = "";
document.getElementById('coord-info-lng').innerHTML = "";
});
}
#coord-info-lat, #coord-info-lng {
opacity:0;
}
#coord-info-lat.shown, coord-info-lng.shown {
opacity: 1;
}
function showCor() {
map.on('mousemove', function (e) {
var lat = document.getElementById('coord-info-lat');
var lng = document.getElementById('coord-info-lng');
lat.innerHTML = JSON.stringify(e.lngLat.lat.toFixed(5));
lng.innerHTML = JSON.stringify(e.lngLat.lng.toFixed(5));
lat.className = "shown";
lng.className = "shown";
});
}
function notShowCor() {
document.getElementById('coord-info-lat').className = "";
document.getElementById('coord-info-lng').className = "";
}
Вы также можете сделать комбинацию из 2
Я решил проблему, установив флаг isActive. Вот мой код.
let isActive = true;
//function to show the position
function showCor() {
isActive = true;
map.on('mousemove', function (e) {
if (isActive) {
document.getElementById('coord-info-lat').innerHTML =
JSON.stringify(e.lngLat.lat.toFixed(5));
document.getElementById('coord-info-lng').innerHTML =
JSON.stringify(e.lngLat.lng.toFixed(5));
}
});
}
//function to clear the info and terminate the function.
function notShowCor() {
isActive = false;
document.getElementById('coord-info-lat').innerHTML = 'N/A';
document.getElementById('coord-info-lng').innerHTML = 'N/A';
}
Пожалуйста, сообщите, если у вас есть лучшие решения. Спасибо.
Существует метод off — docs.mapbox.com/mapbox-gl-js/api/#map#off — который «удаляет прослушиватель событий, ранее добавленный с помощью Map#on».