news 2026/4/28 6:59:29

mapbox popup(动态定位)查询属性方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mapbox popup(动态定位)查询属性方法

标题popup 动态描点位置,防止内容遮盖

functionqueryFeatures(e){constfeatures=window.map.queryRenderedFeatures?window.map.queryRenderedFeatures(e.point,{if(!features||!features.length){ElMessage({message:"未查询到相关要素",type:"warning",});return};constfeature=features[0];constproperties=feature.properties||{};constpopupTitle=`<div style="padding:8px;color:#fff;border-bottom:1px solid #ccc;">元素属性</div>`;letpopupContent='<div class="attr-list style="font-size:13px">';// 过滤出有意义的属性键constkeys=Object.keys(properties||{}).filter((k)=>properties[k]!==null&&properties[k]!==undefined&&properties[k]!=="");if(keys.length===0){// 无属性时展示提示与几何摘要popupContent+=`<div style="padding:8px;color:#fff">该要素无属性</div>`;constgeom=feature.geometry||{};if(geom.type){popupContent+=`<div style="padding:6px 8px;color:#fff">类型:${geom.type}</div>`;try{if(Array.isArray(geom.coordinates)){// 简单统计坐标点数量(对不同几何类型做基本处理)letcount=0;if(geom.type==="Point")count=1;elseif(geom.type==="LineString")count=geom.coordinates.length;elseif(geom.type==="Polygon")count=(geom.coordinates[0]||[]).length;elsecount=JSON.stringify(geom.coordinates).length;popupContent+=`<div style="padding:6px 8px;color:#fff">坐标点数量:${count}</div>`;}}catch(err){// 忽略统计错误}}}else{popupContent=``;// 有属性时按 key-value 显示keys.forEach(([key])=>{});// 清空内容keys.forEach((key)=>{constvalue=properties[key];popupContent+=`<div style="margin:6px;display:flex;align-items:center;"> <strong style="display:inline-block;min-width:90px;color:#fff">${key}:</strong> <span style="color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:calc(100% - 110px);" title="${String(value)}">${String(value)}</span> </div>`;});}popupContent+="</div>";letpopupContentBox=`${popupTitle}<div class="mapboxgl-popup-content">${popupContent}</div>`;// 在创建 Popup 前判断constpoint=window.map.project(e.lngLat);// 转为屏幕像素坐标constmapHeight=window.map.getContainer().offsetHeight;constmapWidth=window.map.getContainer().offsetWidth;constvDir=point.y>mapHeight/2?'bottom':'top';consthDir=point.x>mapWidth/2?'right':'left';constanchor=`${vDir}-${hDir}`;// 例如: 'bottom-right', 'top-left'newcompassengine.Popup({closeButton:true,closeOnClick:true,offset:15,anchor:anchor,}).setLngLat(e.lngLat).setHTML(popupContentBox).addTo(window.map);}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 6:58:27

ANIMATEDIFF PRO企业落地实践:中小工作室AI视频内容生产提效方案

ANIMATEDIFF PRO企业落地实践&#xff1a;中小工作室AI视频内容生产提效方案 1. 项目概述&#xff1a;电影级AI视频渲染工作站 ANIMATEDIFF PRO是一款专为中小型创意工作室打造的高性能AI视频生成平台。基于先进的AnimateDiff架构和Realistic Vision V5.1模型构建&#xff0c…

作者头像 李华
网站建设 2026/4/28 6:57:41

602游戏平台实用功能详解,适配多场景游玩需求

对于上班族、怀旧玩家而言&#xff0c;网页游戏是便捷的放松方式&#xff0c;选择一款合规、实用的游戏平台&#xff0c;能大幅提升游玩体验。深耕页游领域13年的602游戏平台&#xff0c;凭借稳定的运营和丰富的功能&#xff0c;成为众多玩家的选择。该平台主打传奇、魔幻、三国…

作者头像 李华
网站建设 2026/4/28 6:56:38

LFM2.5-VL-1.6B结合SpringBoot开发企业级视觉API服务

LFM2.5-VL-1.6B结合SpringBoot开发企业级视觉API服务 1. 引言&#xff1a;当视觉大模型遇上企业级Java服务 想象一下这样的场景&#xff1a;电商平台每天需要处理数百万张商品图片的自动分类和打标&#xff0c;客服系统要实时识别用户上传的截图内容&#xff0c;生产线上的质…

作者头像 李华
网站建设 2026/4/28 6:54:28

悬臂货架落地绍兴管材厂:双彬自动化助力实现长料高效管理

在管材加工与建材制造行业&#xff0c;原材料的特殊形态往往给仓储管理带来巨大挑战。圆钢、铝型材、塑料管道等长条形物料&#xff0c;若采用传统平放存储&#xff0c;不仅占地面积大&#xff0c;且存取时需频繁移动周边物料&#xff0c;效率低下且存在安全隐患。近日&#xf…

作者头像 李华
网站建设 2026/4/28 6:54:26

R语言画分组柱状图(可以批量)

本文分享一套可直接运行的 R 语言批量绘图脚本&#xff0c;适用于基因表达量分析&#xff0c;自动为每个基因生成带误差棒、原始散点、t 检验 P 值的专业柱形图&#xff0c;一键批量出图&#xff0c;无需手动调整。散点柱状图差异检验&#xff08;标注P值&#xff09;科学配色脚…

作者头像 李华