@ray-js/robot-map-sdk 0.0.16-beta.6 → 0.0.16-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/constant/methods.js +1 -1
  2. package/dist/index.d.ts +95 -58
  3. package/dist/index.rjs.js +1 -1
  4. package/dist-app/assets/{index-B1qsN3Md.js → index-B3zkQ5D_.js} +1 -1
  5. package/dist-app/index.html +1 -1
  6. package/dist-docs/404.html +2 -2
  7. package/dist-docs/agents/domain.html +3 -3
  8. package/dist-docs/agents/issue-tracker.html +3 -3
  9. package/dist-docs/agents/triage-labels.html +3 -3
  10. package/dist-docs/assets/{app.ByFtf7S3.js → app.D_pgzwpi.js} +1 -1
  11. package/dist-docs/assets/chunks/@localSearchIndexroot.Bxg7d_Ma.js +1 -0
  12. package/dist-docs/assets/chunks/{BitmapFont.CxzI5juo.js → BitmapFont.BWTZYR59.js} +1 -1
  13. package/dist-docs/assets/chunks/{BufferResource.DHAX0dLK.js → BufferResource.DxLmzngT.js} +1 -1
  14. package/dist-docs/assets/chunks/{CanvasRenderer.D5NS4GmW.js → CanvasRenderer.B780wi8d.js} +1 -1
  15. package/dist-docs/assets/chunks/{RenderTargetSystem.CcMP0blc.js → RenderTargetSystem.Cy74iJ0h.js} +1 -1
  16. package/dist-docs/assets/chunks/{VPLocalSearchBox.QeMPtZZ2.js → VPLocalSearchBox.D7WdA-jS.js} +1 -1
  17. package/dist-docs/assets/chunks/{WebGLRenderer.DjvikWe1.js → WebGLRenderer.x_Y_nV_1.js} +1 -1
  18. package/dist-docs/assets/chunks/{WebGPURenderer.WuGRbgwP.js → WebGPURenderer.BkDIETNL.js} +1 -1
  19. package/dist-docs/assets/chunks/{browserAll.BoE1srum.js → browserAll.3VWA8hZP.js} +1 -1
  20. package/dist-docs/assets/chunks/{index.DF9JqE9W.js → index.CB5jCxJS.js} +45 -45
  21. package/dist-docs/assets/chunks/json-editor-vue.BBNO6uif.js +3882 -0
  22. package/dist-docs/assets/chunks/theme.5NpS0Xfn.js +4 -0
  23. package/dist-docs/assets/chunks/{webworkerAll.C7VOGNTT.js → webworkerAll.D9dXk2PR.js} +1 -1
  24. package/dist-docs/assets/{guide_getting-started.md.Ciz_rolL.js → guide_getting-started.md.BsqJ9E9q.js} +1 -1
  25. package/dist-docs/assets/guide_spot-room-binding.md.CZGLnxCe.js +31 -0
  26. package/dist-docs/assets/guide_spot-room-binding.md.CZGLnxCe.lean.js +1 -0
  27. package/dist-docs/assets/{reference_config.md.B45KsJB6.js → reference_config.md.Dr5HxVZt.js} +11 -3
  28. package/dist-docs/assets/{reference_config.md.B45KsJB6.lean.js → reference_config.md.Dr5HxVZt.lean.js} +1 -1
  29. package/dist-docs/assets/{reference_runtime.md.BBP2J_yR.js → reference_runtime.md.CX2K6JLY.js} +2 -2
  30. package/dist-docs/assets/{reference_runtime.md.BBP2J_yR.lean.js → reference_runtime.md.CX2K6JLY.lean.js} +1 -1
  31. package/dist-docs/guide/advanced-usage.html +3 -3
  32. package/dist-docs/guide/concepts.html +3 -3
  33. package/dist-docs/guide/getting-started.html +5 -5
  34. package/dist-docs/guide/mcp.html +3 -3
  35. package/dist-docs/guide/spot-room-binding.html +55 -0
  36. package/dist-docs/hashmap.json +1 -1
  37. package/dist-docs/index.html +3 -3
  38. package/dist-docs/plans/2026-03-04-detected-objects-visibility-design.html +3 -3
  39. package/dist-docs/plans/2026-03-04-show-detected-objects-implementation-plan.html +3 -3
  40. package/dist-docs/plans/2026-03-10-simulator-debug-design.html +3 -3
  41. package/dist-docs/plans/2026-03-10-simulator-events-console-design.html +3 -3
  42. package/dist-docs/plans/2026-03-10-simulator-events-console-implementation-plan.html +3 -3
  43. package/dist-docs/plans/2026-03-10-simulator-runtime-controls-design.html +3 -3
  44. package/dist-docs/plans/2026-03-10-simulator-runtime-controls-implementation-plan.html +3 -3
  45. package/dist-docs/plans/2026-03-10-testing-rollout-next-steps-plan.html +3 -3
  46. package/dist-docs/plans/2026-03-11-simulator-logger-dump-implementation-plan.html +3 -3
  47. package/dist-docs/reference/callbacks.html +3 -3
  48. package/dist-docs/reference/config.html +14 -6
  49. package/dist-docs/reference/data.html +3 -3
  50. package/dist-docs/reference/methods.html +3 -3
  51. package/dist-docs/reference/runtime.html +5 -5
  52. package/dist-docs/reference/types.html +3 -3
  53. package/dist-docs/reference/utils.html +3 -3
  54. package/dist-docs/simulator/index.html +3 -3
  55. package/package.json +1 -1
  56. package/dist-docs/assets/chunks/@localSearchIndexroot.CyHa6iJo.js +0 -1
  57. package/dist-docs/assets/chunks/json-editor-vue.CBQvp8j1.js +0 -3882
  58. package/dist-docs/assets/chunks/theme.DjNI0QHl.js +0 -4
  59. /package/dist-docs/assets/{guide_getting-started.md.Ciz_rolL.lean.js → guide_getting-started.md.BsqJ9E9q.lean.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{ac as S,ae as I,af as B,aI as O,p as F,M as w,a4 as A,a0 as E,ak as m,T as y,aA as U,X as C,w as M,aj as Y,x as P}from"./index.DF9JqE9W.js";import"./framework.CBLqO2Q1.js";import"./mapValues.D2X8cRgC.js";import"./theme.DjNI0QHl.js";var X=`in vec2 vTextureCoord;
1
+ import{ac as S,ae as I,af as B,aI as O,p as F,M as w,a4 as A,a0 as E,ak as m,T as y,aA as U,X as C,w as M,aj as Y,x as P}from"./index.CB5jCxJS.js";import"./framework.CBLqO2Q1.js";import"./mapValues.D2X8cRgC.js";import"./theme.5NpS0Xfn.js";var X=`in vec2 vTextureCoord;
2
2
  out vec4 finalColor;
3
3
  uniform sampler2D uTexture;
4
4
  void main() {
@@ -1,4 +1,4 @@
1
- import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md","lastUpdated":1770804529000}'),h={name:"guide/getting-started.md"};function l(k,s,t,e,E,r){return n(),a("div",null,[...s[0]||(s[0]=[p(`<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to &quot;快速开始&quot;">​</a></h1><p>Tuya Robot Map 提供了开箱即用的 React 组件,专为扫地机器人应用设计。</p><h2 id="安装" tabindex="-1">安装 <a class="header-anchor" href="#安装" aria-label="Permalink to &quot;安装&quot;">​</a></h2><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-ExSvA" id="tab-Tw9UxIF" checked><label data-title="yarn" for="tab-Tw9UxIF">yarn</label><input type="radio" name="group-ExSvA" id="tab-IkQLvik"><label data-title="npm" for="tab-IkQLvik">npm</label></div><div class="blocks"><div class="language-bash vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @ray-js/robot-map</span></span></code></pre></div><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @ray-js/robot-map</span></span></code></pre></div></div></div><h2 id="数据传入" tabindex="-1">数据传入 <a class="header-anchor" href="#数据传入" aria-label="Permalink to &quot;数据传入&quot;">​</a></h2><p>仅需传入几个基本的数据props,即可完成地图的呈现。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-WXoi7" id="tab-BN8jCps" checked><label data-title="点阵协议地图数据" for="tab-BN8jCps">点阵协议地图数据</label><input type="radio" name="group-WXoi7" id="tab-62os3z-"><label data-title="结构化协议地图数据" for="tab-62os3z-">结构化协议地图数据</label></div><div class="blocks"><div class="language-tsx vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">tsx</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> React, { useMemo } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;react&#39;</span></span>
1
+ import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md","lastUpdated":1770804529000}'),h={name:"guide/getting-started.md"};function l(k,s,t,e,E,r){return n(),a("div",null,[...s[0]||(s[0]=[p(`<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to &quot;快速开始&quot;">​</a></h1><p>Tuya Robot Map 提供了开箱即用的 React 组件,专为扫地机器人应用设计。</p><h2 id="安装" tabindex="-1">安装 <a class="header-anchor" href="#安装" aria-label="Permalink to &quot;安装&quot;">​</a></h2><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-0WeqG" id="tab-S_h6pdl" checked><label data-title="yarn" for="tab-S_h6pdl">yarn</label><input type="radio" name="group-0WeqG" id="tab-N9w7_rz"><label data-title="npm" for="tab-N9w7_rz">npm</label></div><div class="blocks"><div class="language-bash vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @ray-js/robot-map</span></span></code></pre></div><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @ray-js/robot-map</span></span></code></pre></div></div></div><h2 id="数据传入" tabindex="-1">数据传入 <a class="header-anchor" href="#数据传入" aria-label="Permalink to &quot;数据传入&quot;">​</a></h2><p>仅需传入几个基本的数据props,即可完成地图的呈现。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-qX5Nt" id="tab-iqlQNZI" checked><label data-title="点阵协议地图数据" for="tab-iqlQNZI">点阵协议地图数据</label><input type="radio" name="group-qX5Nt" id="tab-wqm_WQl"><label data-title="结构化协议地图数据" for="tab-wqm_WQl">结构化协议地图数据</label></div><div class="blocks"><div class="language-tsx vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">tsx</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> React, { useMemo } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;react&#39;</span></span>
2
2
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { RobotMap } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@ray-js/robot-map&#39;</span></span>
3
3
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { decodeRoomProperties } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@ray-js/robot-map&#39;</span></span>
4
4
  <span class="line"></span>
@@ -0,0 +1,31 @@
1
+ import{_ as i,c as a,o as n,aq as h}from"./chunks/framework.CBLqO2Q1.js";const c=JSON.parse('{"title":"房间锚点(Room Anchor)","description":"","frontmatter":{},"headers":[],"relativePath":"guide/spot-room-binding.md","filePath":"guide/spot-room-binding.md","lastUpdated":1783589819000}'),t={name:"guide/spot-room-binding.md"};function l(e,s,o,p,k,d){return n(),a("div",null,[...s[0]||(s[0]=[h(`<h1 id="房间锚点-room-anchor" tabindex="-1">房间锚点(Room Anchor) <a class="header-anchor" href="#房间锚点-room-anchor" aria-label="Permalink to &quot;房间锚点(Room Anchor)&quot;">​</a></h1><p>房间锚点是一类<strong>独立于定点(Spot)的元素</strong>:数据类型(<code>RoomAnchorParam</code>)、配置 (<code>controls.roomAnchor</code>)、编辑态(<code>editingRoomAnchorIds</code>)、回调 (<code>onUpdateRoomAnchor</code> / <code>onClickRoomAnchor</code>)均与普通定点分离,互不影响。 它复用定点的渲染能力,但拥有独立图标(<code>roomAnchorIcon</code>)与默认尖端对齐的图标锚点。</p><p>给房间锚点设置 <code>roomId</code> 后,它会被<strong>硬约束</strong>在所属房间内 —— 编辑态下可拖动, 但无法拖出房间边界(拖到房间外的位置会被拒绝,停留在最后一个合法位置)。</p><h2 id="一、绘制房间锚点" tabindex="-1">一、绘制房间锚点 <a class="header-anchor" href="#一、绘制房间锚点" aria-label="Permalink to &quot;一、绘制房间锚点&quot;">​</a></h2><p>房间锚点由外侧主动上报(类似禁区/划框),且<strong>默认不展示</strong>:需要 <code>controls.roomAnchor.show</code> 为 <code>true</code> 才渲染。</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 打开显示开关(也可在 initialize 的 config 里直接给出)</span></span>
2
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">map.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">updateConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({ controls: { roomAnchor: { show: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } } })</span></span>
3
+ <span class="line"></span>
4
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">map.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">drawRoomAnchors</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">([</span></span>
5
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 无 roomId:可自由拖拽的房间锚点</span></span>
6
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { id: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;anchor-free&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, point: { x: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1.2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, y: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0.8</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } },</span></span>
7
+ <span class="line"></span>
8
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 关联房间:设置 roomId 后不可拖出房间 3</span></span>
9
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { id: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;anchor-room-3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, point: { x: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2.0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, y: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1.5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }, roomId: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;客厅&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
10
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])</span></span></code></pre></div><p>坐标使用<strong>机器坐标系</strong>(相对地图原点 origin,与禁区、虚拟墙一致)。房间中心可从 <code>onRoomsDrawed</code> 回调的 <code>relativeCenterPoint</code> 获取。</p><p>传入的数据会被缓存:<code>show</code> 关闭时不渲染但缓存保留,重新打开后即时重绘。</p><h2 id="二、进入编辑态-可拖拽" tabindex="-1">二、进入编辑态(可拖拽) <a class="header-anchor" href="#二、进入编辑态-可拖拽" aria-label="Permalink to &quot;二、进入编辑态(可拖拽)&quot;">​</a></h2><p>把房间锚点 id 放进 <strong><code>editingRoomAnchorIds</code></strong>(注意:不是 <code>editingSpotIds</code>, 两者相互独立、互不影响):</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">map.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">updateRuntime</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({ editingRoomAnchorIds: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;anchor-room-3&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] })</span></span></code></pre></div><p>编辑态下可拖拽;携带 <code>roomId</code> 的锚点被硬约束在所属房间内。</p><h2 id="三、外观配置-controls-roomanchor" tabindex="-1">三、外观配置(controls.roomAnchor) <a class="header-anchor" href="#三、外观配置-controls-roomanchor" aria-label="Permalink to &quot;三、外观配置(controls.roomAnchor)&quot;">​</a></h2><p><code>RoomAnchorConfig</code> 即 <code>SpotConfig</code> 加一个 <code>show</code> 开关,与普通定点的 <code>controls.spot</code> 完全独立:</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">map.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">updateConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
11
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> controls: {</span></span>
12
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> roomAnchor: {</span></span>
13
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> show: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
14
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 图标锚点:默认 { x: 0.5, y: 1 }(图钉尖端对准坐标点);</span></span>
15
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 改为 { x: 0.5, y: 0.5 } 则图标居中于坐标点</span></span>
16
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> iconAnchor: { x: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0.5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, y: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
17
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> editing: { showFrame: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, showFill: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
18
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> normal: { showFrame: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, showFill: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
19
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
20
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
21
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span></code></pre></div><p>配置更新会立即重建已存在的房间锚点(<code>iconAnchor</code>、<code>size</code>、<code>show</code> 等即时生效)。</p><h2 id="四、回调与读取" tabindex="-1">四、回调与读取 <a class="header-anchor" href="#四、回调与读取" aria-label="Permalink to &quot;四、回调与读取&quot;">​</a></h2><p>拖拽、点击走房间锚点专属回调(不是 <code>onUpdateSpot</code> / <code>onClickSpot</code>):</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> map.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">initialize</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
22
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> events: {</span></span>
23
+ <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> onUpdateRoomAnchor</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">anchor</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
24
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // anchor: { id, point: { x, y }, roomId?, name? }</span></span>
25
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;room anchor moved&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, anchor.id, anchor.point, anchor.roomId)</span></span>
26
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
27
+ <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> onClickRoomAnchor</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">anchor</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
28
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;room anchor clicked&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, anchor.id)</span></span>
29
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
30
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
31
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span></code></pre></div><p>任意时刻主动读取(以缓存为准,不受 <code>show</code> 状态影响):</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> anchors</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> map.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getRoomAnchors</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// RoomAnchorParam[]</span></span></code></pre></div><p>清除全部(含缓存):</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">map.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">clearAllRoomAnchors</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()</span></span></code></pre></div><h2 id="小结" tabindex="-1">小结 <a class="header-anchor" href="#小结" aria-label="Permalink to &quot;小结&quot;">​</a></h2><ul><li>数据源:<code>drawRoomAnchors(RoomAnchorParam[])</code> 主动上报;<code>getRoomAnchors()</code> 读取;<code>clearAllRoomAnchors()</code> 清除。</li><li>显隐:<code>controls.roomAnchor.show</code>(默认 <code>false</code>)。</li><li>编辑态:<code>runtime.editingRoomAnchorIds</code>(与 <code>editingSpotIds</code> 独立)。</li><li>房间约束:<code>RoomAnchorParam.roomId</code> —— 有 roomId 即不可拖出该房间。</li><li>回调:<code>onUpdateRoomAnchor</code>(拖动后)/ <code>onClickRoomAnchor</code>(点击)。</li></ul>`,25)])])}const E=i(t,[["render",l]]);export{c as __pageData,E as default};
@@ -0,0 +1 @@
1
+ import{_ as i,c as a,o as n,aq as h}from"./chunks/framework.CBLqO2Q1.js";const c=JSON.parse('{"title":"房间锚点(Room Anchor)","description":"","frontmatter":{},"headers":[],"relativePath":"guide/spot-room-binding.md","filePath":"guide/spot-room-binding.md","lastUpdated":1783589819000}'),t={name:"guide/spot-room-binding.md"};function l(e,s,o,p,k,d){return n(),a("div",null,[...s[0]||(s[0]=[h("",25)])])}const E=i(t,[["render",l]]);export{c as __pageData,E as default};