首页 / 浏览问题 / WebGIS / 问题详情
移除鼠标事件
20EXP 2023年09月14日
使用产品:iserver 11i 操作系统:win10x64 数据类型: postgre sql 问题详细描述:1、我之前设置了一个鼠标事件,随着鼠标移动实时显示经纬度,之后我又设置了一个鼠标移动事件,这个事件需要使用完后移除,但是之前的经纬度那个鼠标事件也被移除了,怎么只删除需要移除的鼠标事件,不影响其他呢 问题重现步骤: 1.

1个回答

您好,

要删除特定的鼠标事件而不影响其他事件,建议您添加事件监听器,确保为每个事件创建一个独立的处理函数,而不是移除全部鼠标事件。

语法如下:element.addEventListener(eventType, callback);

您可以参加这样的代码逻辑:

// 函数一:实时显示经纬度
function showlatlngs(event) {
  
}
 // 函数二:移除事件监听器逻辑
function removeEventHandler(event) {
 
}
// 添加事件监听器
element.addEventListener('mousemove', showCoordinates);
element.addEventListener('mousemove', removeEventHandler);

//移除事件监听器
element.removeEventListener('mousemove', removeEventHandler);

希望可以帮助到您!

460EXP 2023年09月14日
我是直接this.map.on('mousemove', function(e){})这么写的,俩个事件都是这么写的,应该怎么改

这个情况应该是因为this指代不清。建议您去看看事件监听器的相关文档:JavaScript事件监听器总结_js监听hover事件_Maybe_ss的博客-CSDN博客

您可以参考以下代码:

const map = document.getElementById('map');
let showCoordinatesEnabled = true;
let drawEnabled = false;

function showCoordinates(event) {
  const latitude = event.clientY;
  const longitude = event.clientX;
  
  // 在页面上展示地图鼠标移动的经纬度
  document.getElementById('coordinates').innerText = `Latitude: ${latitude}, Longitude: ${longitude}`;
}

function draw(event) {
  if (!drawEnabled) return;
  
  // 实现绘制逻辑
  console.log('绘制中...');
}

function startDrawing() {
  drawEnabled = true;
}

function stopDrawing() {
  drawEnabled = false;
}

map.addEventListener('mousemove', function(e) {
  if (showCoordinatesEnabled) {
    showCoordinates(e);
  }
  else {
    draw(e);
  }
});

// 调用 startDrawing() 开始绘制
startDrawing();

// 调用 stopDrawing() 停止绘制
stopDrawing();

          

          

...