当前位置: 首页 > web >正文

openlayers实现可拖拽的节点(类似知识图谱)

/**

 * 本文介绍了实现知识图谱可视化的技术方案,主要分为两个图层实现:

 * 1、线图层  不拖动

 * 2、点图层 需要拖动

 */

  •  线图层 - 负责绘制静态连接线,使用LineString创建线要素并添加到矢量图层;

// 线图层
export function addKnowledgeGraphLinePoint(id) {const layers = map.getLayers().getArray();let layer = layers.find((item) => item.values_.id === id);if (layer) {layer.getSource().clear();} else {layer = new LayerVector({source: new SourceVector({features: "",}),properties: {id: id,},zIndex: 15,});map.addLayer(layer);// 创建矢量对象var lineString = new LineString(data);var lineFeature = new Feature({ geometry: lineString });// 添加到之前的创建的layer中去layer.getSource().addFeature(lineFeature);}addKnowledgeGrapPoint("KnowledgeGrapPoint", lineString);
}
  • 点图层 - 实现可拖拽的节点功能,通过Translate交互实现拖动,每个节点使用Point创建要素。两个图层通过坐标数据关联,线图层的坐标由点图层拖动时动态更新。代码展示了图层创建、要素添加和交互绑定的具体实现,使用OpenLayers库完成地图可视化功能。

// 点图层
function addKnowledgeGrapPoint(id, lineString) {const layers = map.getLayers().getArray();let layer = layers.find((item) => item.values_.id === id);let translate;if (layer) {layer.getSource().clear();} else {layer = new LayerVector({source: new SourceVector(),properties: {id: id,},});translate = new Translate({layers: [layer],});map.addLayer(layer);map.addInteraction(translate);}for (let index = 0; index < data.length; index++) {const element = data[index];// 创建矢量对象let feature = new Feature({geometry: new Point(element),properties: { id: "points" + index },});// 添加到之前的创建的layer中去layer.getSource().addFeature(feature);_bindMapEvents(layer, translate, lineString);}
}

 

可拖拽的节点

http://www.xdnf.cn/news/12597.html

相关文章:

  • 地震勘探——地震波速度、地震子波、合成地震记录、影响地震振幅的因素
  • 巨控GRM550系列,西门子 S7-1200 PLC 远程上下载与调试技术方案
  • SM560-S (1SAP280000R0001) AC500 CPU Firmware SM560-S-FD-4
  • python学习打卡day45
  • 深入Kubernetes源码阅读指南核心概念-代码目录-pkg/kubeapiserver
  • 信息检索与利用
  • AcWing 3417:砝码称重——位集合
  • MCV的安装和运行
  • 第4天:RNN应用(心脏病预测)
  • 前端异步编程全场景解读
  • Java多态中的类型转换详解
  • Cesium添加图片标记点、glb模型
  • 双面沉金电路板工艺全解析:关键技术要点与行业应用实践
  • 飞凌嵌入式AM62x核心板驱动微电网智能化创新
  • ABAT100蓄电池在线监测系统:准确预警,保障电池安全运行
  • 使用python把json数据追加进文件,然后每次读取时,读取第一行并删除
  • [蓝桥杯]兰顿蚂蚁
  • 2025年全国青少年信息素养大赛 scratch图形化编程挑战赛 小高组初赛 真题详细解析
  • vue3学习(toRefs和toRef,computed计算属性 ,v-model指令,箭头函数)
  • 2025/6/4知识点总结—HALCON像素坐标转物理坐标
  • chatlog:一个基于MCP实现聊天记录总结和查询的开源工具
  • WebFuture:Syncthing配置以www-data用户运行
  • LINUX 66 FTP 2 ;FTP被动模式;FTP客户服务系统
  • Python训练营---Day46
  • R²ec: 构建具有推理能力的大型推荐模型,显著提示推荐系统性能!!
  • python中的逻辑运算
  • 什么是强化学习:设置奖励函数最为loss, 监督学习:标签准确率作为loss
  • 三维GIS开发cesium智慧地铁教程(4)城市白模加载与样式控制
  • 【正念365】助你好“眠”
  • python实战:如何对word文档的格式进行定制化排版