indoor3D进阶技巧:自定义主题样式与交互事件监听实战
indoor3D进阶技巧自定义主题样式与交互事件监听实战【免费下载链接】indoor3Da js lib based on three.js to show 3D indoor map项目地址: https://gitcode.com/gh_mirrors/in/indoor3Dindoor3D是一款基于three.js开发的JavaScript库专为3D室内地图展示而设计。本文将分享两个核心进阶技巧通过自定义主题样式打造个性化地图视觉效果以及利用交互事件监听实现丰富的用户交互体验帮助开发者充分发挥indoor3D的潜力。一、自定义主题样式打造专属视觉风格 indoor3D提供了灵活的主题定制功能通过修改主题配置可以轻松改变地图的整体视觉风格。主题配置主要集中在js/Theme.js文件中包含背景色、建筑样式、楼层样式等关键视觉元素的定义。1.1 主题配置基础结构主题配置对象的基本结构如下var testTheme { name: picGenTheme, // 主题名称 background: #F2F2F2, // 背景颜色 building: { ... }, // 建筑样式 floor: { ... }, // 楼层样式 selected: #fffdb0, // 选中区域颜色 room: function(type, category) { ... }, // 房间样式 strokeStyle: { ... }, // 线条样式 fontStyle: { ... }, // 字体样式 pubPointImg: { ... } // 公共设施图标 }1.2 核心样式定制方法1修改整体背景与基础色通过修改background属性可以改变地图的整体背景色而building和floor对象则控制建筑和楼层的基础样式background: #E8F4F8, // 浅蓝色背景 building: { color: #006699, // 深蓝色建筑 opacity: 0.2, transparent: true }, floor: { color: #FFFFFF, // 白色楼层 opacity: 1, transparent: false }2自定义房间类别样式room函数允许根据房间类型和类别返回不同的样式例如为餐饮区设置独特颜色case 101: // 餐饮区 roomStyle { color: #FFE0B2, // 暖橙色 opacity: 0.8, transparent: true }; break;3公共设施图标配置pubPointImg对象定义了各类公共设施的图标路径系统会自动加载这些图标并显示在地图上pubPointImg: { 11001: System.imgPath/toilet.png, // 卫生间图标 11002: System.imgPath/ATM.png, // ATM图标 21001: System.imgPath/stair.png, // 楼梯图标 22006: System.imgPath/entry.png, // 入口图标 21002: System.imgPath/escalator.png, // 扶梯图标 21003: System.imgPath/lift.png // 电梯图标 }二、交互事件监听实现用户交互功能 indoor3D提供了完善的交互事件监听机制通过设置监听器可以响应用户的选择、点击等操作实现丰富的交互功能。交互相关代码主要在js/IndoorMap2d.js文件中实现。2.1 设置选择监听器通过setSelectionListener方法可以注册选择事件监听器当用户点击地图上的区域时触发// 设置选择监听器 map.setSelectionListener(function(selectedId) { if (selectedId ! -1) { console.log(选中了区域 selectedId); // 处理选中逻辑如显示区域详情 } else { console.log(取消选择); // 处理取消选择逻辑 } });2.2 启用/禁用选择功能使用setSelectable方法可以控制是否允许用户选择地图上的区域// 启用选择功能 map.setSelectable(true); // 禁用选择功能 map.setSelectable(false);2.3 处理选择事件选择事件的处理逻辑在onSelectObject函数中实现该函数会在用户点击地图时被调用function onSelectObject(event) { // 处理点击坐标 var pos [0,0]; if(event.type touchend){ pos[0] event.changedTouches[0].clientX; pos[1] event.changedTouches[0].clientY; }else { pos[0] event.clientX; pos[1] event.clientY; } // 判断是否为有效点击不是拖动操作 if(Math.abs(pos[0] - _controls.startPoint[0] pos[1] - _controls.startPoint[1]) 5) { // 转换坐标并执行选择逻辑 pos[0] - IDM.DomUtil.getElementLeft(_mapDiv); pos[1] - IDM.DomUtil.getElementTop(_mapDiv); _this.deselectAll(); // 取消之前的选择 _selected _this.renderer.onSelect(pos); // 获取选中的对象 if (_selected) { _this.select(_selected); // 选中新对象 if (_selectionListener) { _selectionListener(_this.getSelectedId()); // 触发监听器 } } } }2.4 实现区域选择效果当用户选择某个区域时系统会通过select方法改变区域的显示样式实现高亮效果this.select function(obj){ if(obj ! undefined) { _selectedOldColor obj.fillColor; // 保存原始颜色 obj.fillColor _theme.selected; // 设置选中颜色 _selected obj; redraw(); // 重绘地图 } }三、实战应用主题切换与交互功能实现3.1 实现主题切换功能结合主题配置和indoor3D的API可以实现动态主题切换功能// 定义多个主题 var themes { default: testTheme, dark: darkTheme, vibrant: vibrantTheme }; // 切换主题的函数 function switchTheme(themeName) { var newTheme themes[themeName]; if (newTheme) { map.setTheme(newTheme); // 设置新主题 map.render(); // 重新渲染地图 } }3.2 结合交互与主题的应用场景通过将主题定制与交互监听相结合可以实现丰富的应用场景例如当用户选择餐饮区域时自动切换到突出显示餐饮类别的主题根据时间段自动切换日/夜间主题结合用户位置信息高亮显示附近的设施四、总结与扩展通过自定义主题样式和交互事件监听开发者可以充分发挥indoor3D的灵活性打造个性化的3D室内地图应用。主题定制不仅可以改变地图的视觉风格还能通过颜色编码传递更多信息交互事件则让地图从静态展示变为动态交互的平台。indoor3D还提供了更多高级功能如3D视角切换、路径规划等结合本文介绍的主题定制和交互监听技巧可以开发出功能丰富、体验优秀的室内地图应用。想要开始使用indoor3D可以通过以下命令克隆项目仓库git clone https://gitcode.com/gh_mirrors/in/indoor3D探索js/IndoorMap3d.js文件可以了解更多3D相关的功能实现而data/目录下的JSON文件则提供了地图数据的示例格式帮助你快速上手开发。【免费下载链接】indoor3Da js lib based on three.js to show 3D indoor map项目地址: https://gitcode.com/gh_mirrors/in/indoor3D创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Apifox如何调用ollama本地配置的大模型

Apifox如何调用ollama本地配置的大模型

我本地配置的千问大模型,不记得哪个版本,先在终端:Ollama list查询到本地配置的所有大模型,然后选择其中某个运行:Ollama run qwen3.5:0.8B问个你好,回复就代表本地部署没问题。打开ollama官网,…

2026/7/11 13:49:52阅读更多 →
PC Secure Boot 配置对比:Windows 11 与主流主板厂商的 3 类 BIOS 设置

PC Secure Boot 配置对比:Windows 11 与主流主板厂商的 3 类 BIOS 设置

Windows 11安全启动全攻略:三大主板厂商BIOS设置详解在当今数字化时代,电脑安全已成为每个用户不可忽视的重要议题。Secure Boot(安全启动)作为Windows 11的核心安全功能之一,能够有效防止恶意软件在系统启动过程中加载…

2026/7/11 13:49:52阅读更多 →
GPT充值之后,别只会问答:开发者应该先搭建一套 AI 工作流

GPT充值之后,别只会问答:开发者应该先搭建一套 AI 工作流

很多人完成 GPT 版本升级之后,仍然只把它当成聊天工具使用:问问题、写文案、解释报错。对于开发者来说,这样其实没有发挥出 GPT 和 Codex 的真正价值。更合理的方式,是把 AI 放进需求拆解、项目分析、代码修改、测试验证、Git Dif…

2026/7/11 13:49:52阅读更多 →
鹤壁办婚宴,烟酒怎么备不浪费又体面?

鹤壁办婚宴,烟酒怎么备不浪费又体面?

我在鹤壁淇滨区开了多年烟酒店。 每天接触最多的就是来买酒的顾客。 说实话,很多人办宴席时不知道该备多少酒。 今天分享几点经验,希望对你有帮助。 算用量:按桌数和人头来估,最稳当 在鹤壁,一场婚宴的酒水用量估算至…

2026/7/11 14:59:59阅读更多 →
cann/runtime主机内存管理

cann/runtime主机内存管理

11-02 主机内存管理 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 本章节描述主机(Host)内存的分配、释放、注册及指针获取接口。 aclError aclrtMallocHost(void **hostPtr,…

2026/7/11 14:59:59阅读更多 →
《LeetCode 152 乘积最大子数组 || LeetCode 413 等差数列划分》

《LeetCode 152 乘积最大子数组 || LeetCode 413 等差数列划分》

一、题目二、做题思路2.1 状态表示(核心基础)本题要求计算数组中乘积最大的连续子数组。由于负数相乘可能反转大小关系,仅记录最大乘积不够,还需记录最小乘积。因此定义两个状态:f[i] 表示以 nums[i] 结尾的子数组的最…

2026/7/11 14:59:59阅读更多 →
终极指南:15个WuWa-Mod模组如何彻底改变你的《鸣潮》游戏体验?

终极指南:15个WuWa-Mod模组如何彻底改变你的《鸣潮》游戏体验?

终极指南:15个WuWa-Mod模组如何彻底改变你的《鸣潮》游戏体验? 【免费下载链接】wuwa-mod Wuthering Waves pak mods 项目地址: https://gitcode.com/GitHub_Trending/wu/wuwa-mod 还在为《鸣潮》游戏中的重复刷怪、技能冷却和资源收集而烦恼吗&a…

2026/7/11 14:59:59阅读更多 →
Windows 10用户终于等到了:微软原生容器方案WSL Containers实测与部署详解

Windows 10用户终于等到了:微软原生容器方案WSL Containers实测与部署详解

年初微软悄然推出了一项让不少开发者眼前一亮的新能力——WSL Containers。这个名字听起来像是WSL的某个插件,实际上它是一个完全内嵌在Windows Subsystem for Linux里的原生容器平台。换句话说,你的Windows系统本身就能直接跑容器,不再需要额…

2026/7/11 14:59:59阅读更多 →
【代码随想录算法训练营第32天】动态规划part01 | 理论基础 | 509. 斐波那契数 | 70. 爬楼梯 | 746. 使用最小花费爬楼梯

【代码随想录算法训练营第32天】动态规划part01 | 理论基础 | 509. 斐波那契数 | 70. 爬楼梯 | 746. 使用最小花费爬楼梯

文章目录 KEY509. 斐波那契数完整代码 70. 爬楼梯整个代码: 746. 使用最小花费爬楼梯整个代码: KEY 简单,不用看这次的笔记。 509. 斐波那契数 太简单,不用管。 注意这个细节: if (n0) return 0; if (n1) return 1;…

2026/7/11 14:54:59阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/10 12:10:00阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/10 12:29:21阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/10 4:59:05阅读更多 →
Premiere Pro 2025安装失败原因与AGSIS验证绕过指南

Premiere Pro 2025安装失败原因与AGSIS验证绕过指南

1. 为什么2025版PR安装比以往更“磨人”?——从弹窗警告到路径陷阱的真实处境 Premiere Pro 2025版不是简单的一次版本迭代,它是一道分水岭。我从去年底开始帮影视工作室、高校剪辑实验室和自由职业者部署2025环境,累计处理了137台设备&#…

2026/7/11 0:03:43阅读更多 →
5款实用macOS系统优化工具:让你的Mac运行更流畅更高效

5款实用macOS系统优化工具:让你的Mac运行更流畅更高效

5款实用macOS系统优化工具:让你的Mac运行更流畅更高效 【免费下载链接】open-source-mac-os-apps 🚀 Awesome list of open source applications for macOS. https://t.me/s/opensourcemacosapps 项目地址: https://gitcode.com/gh_mirrors/op/open-so…

2026/7/11 0:03:43阅读更多 →
5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 想要让AI图像生成真正听从你的指挥吗&…

2026/7/11 0:03:43阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/10 13:39:09阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/10 22:20:33阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/10 17:29:22阅读更多 →