优化OpenLayers中的气泡Popup显示逻辑以实现智能交互

OpenLayers V9.2.2

显示气泡:当鼠标移入城市时,显示气泡。
隐藏气泡:当鼠标移出城市但仍在气泡内时,气泡应保持显示;当鼠标移出气泡且不在任何城市上时,气泡应隐藏。

function checkMouseOutPopup(evt){
  const popupElement = document.getElementById('popup');  
  
  // 获取 popup 的位置和尺寸  
  const rect = popupElement.getBoundingClientRect();  
  console.log(rect)
  
  const domEvent = evt.originalEvent || evt;
  // 获取鼠标的屏幕坐标  
  const mouseX = domEvent.clientX;  
  const mouseY = domEvent.clientY;  

  // 检查鼠标是否不在 popup 的边界内  
  if (  
      mouseX < rect.left ||  
      mouseX > rect.right ||  
      mouseY < rect.top ||  
      mouseY > rect.bottom  
  ) {  
    console.log('鼠标不在 popup 中  ')
    return true; // 鼠标不在 popup 中  
  } else{
    return false; 
  } 
}

map.on('pointermove', function(evt) {
	let feature = map.forEachFeatureAtPixel(pixel, function(feature) {  
        return feature;  
    });
     
    if (feature) {  
        // 鼠标在某个城市上  
        if (checkMouseOutPopup(evt)) {
        	// 执行逻辑,显示气泡
        }
    } 	
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值