@ray-js/robot-map-sdk 0.0.15 → 0.0.16-beta.10

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 (71) hide show
  1. package/bin/mcp-server.js +24 -24
  2. package/dist/constant/methods.js +1 -1
  3. package/dist/index.d.ts +139 -4
  4. package/dist/index.rjs.js +1 -1
  5. package/dist-app/assets/index-CKs7mckI.js +1 -0
  6. package/dist-app/index.html +1 -1
  7. package/dist-docs/404.html +2 -2
  8. package/dist-docs/agents/domain.html +3 -3
  9. package/dist-docs/agents/issue-tracker.html +3 -3
  10. package/dist-docs/agents/triage-labels.html +3 -3
  11. package/dist-docs/assets/{app.BXGPC0v4.js → app.Bgoj8KA9.js} +1 -1
  12. package/dist-docs/assets/chunks/@localSearchIndexroot.CHVWB7VI.js +1 -0
  13. package/dist-docs/assets/chunks/{BitmapFont.DzUyMNlJ.js → BitmapFont.Cn5tEcHP.js} +1 -1
  14. package/dist-docs/assets/chunks/{BufferResource.Drg97r2Z.js → BufferResource.DZKZSM1k.js} +1 -1
  15. package/dist-docs/assets/chunks/{CanvasRenderer.vfz9sPE6.js → CanvasRenderer.Bi_W60sK.js} +1 -1
  16. package/dist-docs/assets/chunks/{RenderTargetSystem.Bkr0oS6j.js → RenderTargetSystem.D5BIr0Br.js} +1 -1
  17. package/dist-docs/assets/chunks/{VPLocalSearchBox.C7HJ4UkB.js → VPLocalSearchBox.B0OzIf0s.js} +1 -1
  18. package/dist-docs/assets/chunks/{WebGLRenderer.D4Dgosvx.js → WebGLRenderer.OH-2Ff0j.js} +1 -1
  19. package/dist-docs/assets/chunks/{WebGPURenderer.CT3AUgw3.js → WebGPURenderer.q-zbsRwy.js} +1 -1
  20. package/dist-docs/assets/chunks/{browserAll.NKEQOzVE.js → browserAll.F6MnNd3i.js} +1 -1
  21. package/dist-docs/assets/chunks/index.BlykEJhQ.js +744 -0
  22. package/dist-docs/assets/chunks/theme.CB2YL8Lx.js +4 -0
  23. package/dist-docs/assets/chunks/{webworkerAll.JQUyAE7k.js → webworkerAll.DtS1CXDs.js} +1 -1
  24. package/dist-docs/assets/{guide_advanced-usage.md.DNWCmYfB.js → guide_advanced-usage.md.B1LO3kNP.js} +34 -3
  25. package/dist-docs/assets/{guide_advanced-usage.md.DNWCmYfB.lean.js → guide_advanced-usage.md.B1LO3kNP.lean.js} +1 -1
  26. package/dist-docs/assets/{guide_getting-started.md.s0ecK_5b.js → guide_getting-started.md.CHQim8cP.js} +1 -1
  27. package/dist-docs/assets/guide_spot-room-binding.md.CZGLnxCe.js +31 -0
  28. package/dist-docs/assets/guide_spot-room-binding.md.CZGLnxCe.lean.js +1 -0
  29. package/dist-docs/assets/reference_callbacks.md.4Y7lqLLW.js +33 -0
  30. package/dist-docs/assets/reference_callbacks.md.4Y7lqLLW.lean.js +1 -0
  31. package/dist-docs/assets/{reference_config.md.B45KsJB6.js → reference_config.md.Dr5HxVZt.js} +11 -3
  32. package/dist-docs/assets/{reference_config.md.B45KsJB6.lean.js → reference_config.md.Dr5HxVZt.lean.js} +1 -1
  33. package/dist-docs/assets/{reference_data.md.BjBUZrZo.js → reference_data.md.C3E1VcWx.js} +16 -1
  34. package/dist-docs/assets/{reference_data.md.BjBUZrZo.lean.js → reference_data.md.C3E1VcWx.lean.js} +1 -1
  35. package/dist-docs/assets/{reference_runtime.md.BBP2J_yR.js → reference_runtime.md.CX2K6JLY.js} +2 -2
  36. package/dist-docs/assets/{reference_runtime.md.BBP2J_yR.lean.js → reference_runtime.md.CX2K6JLY.lean.js} +1 -1
  37. package/dist-docs/assets/{reference_types.md.BDKGwrGI.js → reference_types.md.Btpi6Kd9.js} +37 -3
  38. package/dist-docs/assets/reference_types.md.Btpi6Kd9.lean.js +1 -0
  39. package/dist-docs/guide/advanced-usage.html +37 -6
  40. package/dist-docs/guide/concepts.html +3 -3
  41. package/dist-docs/guide/getting-started.html +5 -5
  42. package/dist-docs/guide/mcp.html +3 -3
  43. package/dist-docs/guide/spot-room-binding.html +55 -0
  44. package/dist-docs/hashmap.json +1 -1
  45. package/dist-docs/index.html +3 -3
  46. package/dist-docs/plans/2026-03-04-detected-objects-visibility-design.html +3 -3
  47. package/dist-docs/plans/2026-03-04-show-detected-objects-implementation-plan.html +3 -3
  48. package/dist-docs/plans/2026-03-10-simulator-debug-design.html +3 -3
  49. package/dist-docs/plans/2026-03-10-simulator-events-console-design.html +3 -3
  50. package/dist-docs/plans/2026-03-10-simulator-events-console-implementation-plan.html +3 -3
  51. package/dist-docs/plans/2026-03-10-simulator-runtime-controls-design.html +3 -3
  52. package/dist-docs/plans/2026-03-10-simulator-runtime-controls-implementation-plan.html +3 -3
  53. package/dist-docs/plans/2026-03-10-testing-rollout-next-steps-plan.html +3 -3
  54. package/dist-docs/plans/2026-03-11-simulator-logger-dump-implementation-plan.html +3 -3
  55. package/dist-docs/reference/callbacks.html +5 -5
  56. package/dist-docs/reference/config.html +14 -6
  57. package/dist-docs/reference/data.html +20 -5
  58. package/dist-docs/reference/methods.html +3 -3
  59. package/dist-docs/reference/runtime.html +5 -5
  60. package/dist-docs/reference/types.html +40 -6
  61. package/dist-docs/reference/utils.html +3 -3
  62. package/dist-docs/simulator/index.html +3 -3
  63. package/package.json +1 -1
  64. package/dist-app/assets/index-DMEnUYiD.js +0 -1
  65. package/dist-docs/assets/chunks/@localSearchIndexroot.D-feMZmG.js +0 -1
  66. package/dist-docs/assets/chunks/index.CvitVYBK.js +0 -744
  67. package/dist-docs/assets/chunks/theme.DUpgtHaE.js +0 -4
  68. package/dist-docs/assets/reference_callbacks.md.FoJwSjMy.js +0 -33
  69. package/dist-docs/assets/reference_callbacks.md.FoJwSjMy.lean.js +0 -1
  70. package/dist-docs/assets/reference_types.md.BDKGwrGI.lean.js +0 -1
  71. /package/dist-docs/assets/{guide_getting-started.md.s0ecK_5b.lean.js → guide_getting-started.md.CHQim8cP.lean.js} +0 -0
@@ -1 +1 @@
1
- import{_ as e,c as i,o as a,aq as t}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"配置","description":"","frontmatter":{},"headers":[],"relativePath":"reference/config.md","filePath":"reference/config.md","lastUpdated":1780467652000}'),s={name:"reference/config.md"};function l(n,o,r,c,d,h){return a(),i("div",null,[...o[0]||(o[0]=[t("",1375)])])}const k=e(s,[["render",l]]);export{g as __pageData,k as default};
1
+ import{_ as e,c as i,o as a,aq as t}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"配置","description":"","frontmatter":{},"headers":[],"relativePath":"reference/config.md","filePath":"reference/config.md","lastUpdated":1783508204000}'),s={name:"reference/config.md"};function l(n,o,r,c,d,h){return a(),i("div",null,[...o[0]||(o[0]=[t("",1383)])])}const k=e(s,[["render",l]]);export{g as __pageData,k as default};
@@ -1,4 +1,4 @@
1
- import{_ as i,c as a,o as n,aq as h}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"数据","description":"","frontmatter":{},"headers":[],"relativePath":"reference/data.md","filePath":"reference/data.md","lastUpdated":1779971049000}'),p={name:"reference/data.md"};function l(t,s,k,e,E,r){return n(),a("div",null,[...s[0]||(s[0]=[h(`<h1 id="数据" tabindex="-1">数据 <a class="header-anchor" href="#数据" aria-label="Permalink to &quot;数据&quot;">​</a></h1><p>了解 RobotMap 支持的各种数据类型和格式。</p><h2 id="map" tabindex="-1">map <a class="header-anchor" href="#map" aria-label="Permalink to &quot;map&quot;">​</a></h2><p>地图栅格数据,通常为编码后的字符串格式。</p><div class="language-tsx vp-adaptive-theme"><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:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">RobotMap</span></span>
1
+ import{_ as i,c as a,o as n,aq as h}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"数据","description":"","frontmatter":{},"headers":[],"relativePath":"reference/data.md","filePath":"reference/data.md","lastUpdated":1781611052000}'),p={name:"reference/data.md"};function l(t,s,k,e,E,r){return n(),a("div",null,[...s[0]||(s[0]=[h(`<h1 id="数据" tabindex="-1">数据 <a class="header-anchor" href="#数据" aria-label="Permalink to &quot;数据&quot;">​</a></h1><p>了解 RobotMap 支持的各种数据类型和格式。</p><h2 id="map" tabindex="-1">map <a class="header-anchor" href="#map" aria-label="Permalink to &quot;map&quot;">​</a></h2><p>地图栅格数据,通常为编码后的字符串格式。</p><div class="language-tsx vp-adaptive-theme"><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:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">RobotMap</span></span>
2
2
  <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> map</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;&lt;原始地图数据字符串&gt;&quot;</span></span>
3
3
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // ... 其他属性</span></span>
4
4
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/&gt;</span></span></code></pre></div><p><strong>类型</strong>: <code>string</code></p><p><strong>说明</strong>:</p><ul><li>包含地图尺寸、分辨率、原点等基础信息。</li><li>包含障碍物、房间、地毯等图形数据。</li><li>通常是来源于p2p通道获取的数据,无需做任何处理,直接传入即可。</li></ul><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>目前地图数据协议分为两种,一种是点阵协议,一种是结构化协议。</p><p><code>map</code> 已经兼容支持两种协议,你只需要传入原始数据字符串即可。</p></div><h2 id="path" tabindex="-1">path <a class="header-anchor" href="#path" aria-label="Permalink to &quot;path&quot;">​</a></h2><p>机器人路径数据,包含清扫轨迹和当前位置。</p><div class="language-tsx vp-adaptive-theme"><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:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">RobotMap</span></span>
@@ -158,6 +158,21 @@ import{_ as i,c as a,o as n,aq as h}from"./chunks/framework.CBLqO2Q1.js";const g
158
158
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> y: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">300</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
159
159
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> width: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">60</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
160
160
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> height: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span></span>
161
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
162
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 固定像素偏移:贴在某个锚点旁边,缩放/旋转都不漂移</span></span>
163
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
164
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> id: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;room-badge&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
165
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;image&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
166
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> src: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;https://example.com/badge.png&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
167
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> sizeFixed: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
168
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // x/y 为地图锚点(这里假设是房间中心点)</span></span>
169
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> x: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">100</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
170
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> y: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">200</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
171
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 底部中心对齐锚点,再向上偏移 10px、向右 12px(屏幕像素,不随缩放变化)</span></span>
172
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> anchor: { 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>
173
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> pixelOffset: { x: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, y: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
174
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> width: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
175
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> height: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span></span>
161
176
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
162
177
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
163
178
  <span class="line"></span>
@@ -1 +1 @@
1
- import{_ as i,c as a,o as n,aq as h}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"数据","description":"","frontmatter":{},"headers":[],"relativePath":"reference/data.md","filePath":"reference/data.md","lastUpdated":1779971049000}'),p={name:"reference/data.md"};function l(t,s,k,e,E,r){return n(),a("div",null,[...s[0]||(s[0]=[h("",69)])])}const y=i(p,[["render",l]]);export{g as __pageData,y as default};
1
+ import{_ as i,c as a,o as n,aq as h}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"数据","description":"","frontmatter":{},"headers":[],"relativePath":"reference/data.md","filePath":"reference/data.md","lastUpdated":1781611052000}'),p={name:"reference/data.md"};function l(t,s,k,e,E,r){return n(),a("div",null,[...s[0]||(s[0]=[h("",69)])])}const y=i(p,[["render",l]]);export{g as __pageData,y as default};
@@ -1,4 +1,4 @@
1
- import{_ as e,c as i,o as s,aq as a}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"运行时配置","description":"","frontmatter":{},"headers":[],"relativePath":"reference/runtime.md","filePath":"reference/runtime.md","lastUpdated":1777535786000}'),t={name:"reference/runtime.md"};function n(l,o,r,d,c,h){return s(),i("div",null,[...o[0]||(o[0]=[a(`<h1 id="运行时配置" tabindex="-1">运行时配置 <a class="header-anchor" href="#运行时配置" aria-label="Permalink to &quot;运行时配置&quot;">​</a></h1><p>了解 RobotMap 的运行时配置项,用于控制地图在运行过程中的动态行为和状态。</p><h2 id="使用示例" tabindex="-1">使用示例 <a class="header-anchor" href="#使用示例" aria-label="Permalink to &quot;使用示例&quot;">​</a></h2><p>运行时配置通过 <code>runtime</code> 传递,所有配置项都是可选的,你可以只覆盖需要修改的部分。</p><div class="language-tsx vp-adaptive-theme"><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 </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 e,c as i,o as s,aq as a}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"运行时配置","description":"","frontmatter":{},"headers":[],"relativePath":"reference/runtime.md","filePath":"reference/runtime.md","lastUpdated":1783589819000}'),t={name:"reference/runtime.md"};function n(l,o,r,d,c,h){return s(),i("div",null,[...o[0]||(o[0]=[a(`<h1 id="运行时配置" tabindex="-1">运行时配置 <a class="header-anchor" href="#运行时配置" aria-label="Permalink to &quot;运行时配置&quot;">​</a></h1><p>了解 RobotMap 的运行时配置项,用于控制地图在运行过程中的动态行为和状态。</p><h2 id="使用示例" tabindex="-1">使用示例 <a class="header-anchor" href="#使用示例" aria-label="Permalink to &quot;使用示例&quot;">​</a></h2><p>运行时配置通过 <code>runtime</code> 传递,所有配置项都是可选的,你可以只覆盖需要修改的部分。</p><div class="language-tsx vp-adaptive-theme"><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 </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>
4
4
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> MapPage</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span>
@@ -17,4 +17,4 @@ import{_ as e,c as i,o as s,aq as a}from"./chunks/framework.CBLqO2Q1.js";const g
17
17
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // ... 其他props</span></span>
18
18
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /&gt;</span></span>
19
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></code></pre></div><h2 id="dividingroomid" tabindex="-1">dividingRoomId <a class="header-anchor" href="#dividingroomid" aria-label="Permalink to &quot;dividingRoomId&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number</code></li><li><strong>默认值</strong>: <code>-1</code></li></ul><p>正在分割的房间ID。</p><p>你可以通过将 <code>dividingRoomId</code> 设置为 <code>-1</code> 来移除分割线。</p><h2 id="enableroomselection" tabindex="-1">enableRoomSelection <a class="header-anchor" href="#enableroomselection" aria-label="Permalink to &quot;enableRoomSelection&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否启用房间选择功能</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><ul><li><strong>当 <code>enableRoomSelection</code> 为 <code>false</code> 时</strong>:房间使用普通展示模式的颜色(对应 <code>room.colors.normal</code>,若未定义则使用 <code>room.colors.active</code>)。</li><li><strong>当 <code>enableRoomSelection</code> 为 <code>true</code> 时</strong>:进入房间选择模式。房间颜色根据是否被选中(是否在 <code>selectRoomIds</code> 中)在 <code>active</code> 和 <code>inactive</code> 之间切换。</li></ul></div><h2 id="enableinteraction" tabindex="-1">enableInteraction <a class="header-anchor" href="#enableinteraction" aria-label="Permalink to &quot;enableInteraction&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否启用交互功能。</p><p>当 <code>enableInteraction</code> 为 <code>false</code> 时,地图不会响应任何交互事件。</p><h2 id="enablemapclickcapture" tabindex="-1">enableMapClickCapture <a class="header-anchor" href="#enablemapclickcapture" aria-label="Permalink to &quot;enableMapClickCapture&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否启用地图点击捕获功能。</p><p>开启地图点击捕获功能后,用户点击地图时会触发 <code>onClickMap</code> 回调。</p><h2 id="editingforbiddensweepzoneids" tabindex="-1">editingForbiddenSweepZoneIds <a class="header-anchor" href="#editingforbiddensweepzoneids" aria-label="Permalink to &quot;editingForbiddenSweepZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的禁扫区域ID列表。</p><h2 id="editingforbiddenmopzoneids" tabindex="-1">editingForbiddenMopZoneIds <a class="header-anchor" href="#editingforbiddenmopzoneids" aria-label="Permalink to &quot;editingForbiddenMopZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的禁拖区域ID列表。</p><h2 id="editingcleanzoneids" tabindex="-1">editingCleanZoneIds <a class="header-anchor" href="#editingcleanzoneids" aria-label="Permalink to &quot;editingCleanZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的清扫区域ID列表。</p><h2 id="editingcustomzoneids" tabindex="-1">editingCustomZoneIds <a class="header-anchor" href="#editingcustomzoneids" aria-label="Permalink to &quot;editingCustomZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>Record&lt;string, string[]&gt;</code></li><li><strong>默认值</strong>: <code>{}</code></li></ul><p>正在编辑的自定义区域ID列表,按自定义类型分组。key 为通过 <a href="/reference/config.html#customzonetypes"><code>config.customZoneTypes</code></a> 声明的类型名,value 为该类型下处于编辑态的区域 ID 列表。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>三种内置区域(forbiddenSweepZone / forbiddenMopZone / cleanZone)继续使用各自的 <code>editingForbiddenSweepZoneIds</code> / <code>editingForbiddenMopZoneIds</code> / <code>editingCleanZoneIds</code>,不会出现在这里。</p></div><h2 id="editingvirtualwallids" tabindex="-1">editingVirtualWallIds <a class="header-anchor" href="#editingvirtualwallids" aria-label="Permalink to &quot;editingVirtualWallIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的虚拟墙ID列表。</p><h2 id="editingspotids" tabindex="-1">editingSpotIds <a class="header-anchor" href="#editingspotids" aria-label="Permalink to &quot;editingSpotIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的定点清扫ID列表。</p><h2 id="editingwaypointids" tabindex="-1">editingWayPointIds <a class="header-anchor" href="#editingwaypointids" aria-label="Permalink to &quot;editingWayPointIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的途径点ID列表。</p><h2 id="editingcarpetids" tabindex="-1">editingCarpetIds <a class="header-anchor" href="#editingcarpetids" aria-label="Permalink to &quot;editingCarpetIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的地毯ID列表。</p><h2 id="editingfurnitureids" tabindex="-1">editingFurnitureIds <a class="header-anchor" href="#editingfurnitureids" aria-label="Permalink to &quot;editingFurnitureIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的家具ID列表。</p><h2 id="maprotation" tabindex="-1">mapRotation <a class="header-anchor" href="#maprotation" aria-label="Permalink to &quot;mapRotation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number</code></li><li><strong>默认值</strong>: <code>0</code></li><li><strong>单位</strong>: <code>度(°)</code></li></ul><p>地图旋转角度。</p><h2 id="roompropertyfoldids" tabindex="-1">roomPropertyFoldIds <a class="header-anchor" href="#roompropertyfoldids" aria-label="Permalink to &quot;roomPropertyFoldIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>处于折叠状态的房间ID列表。</p><h2 id="roomselectionmode" tabindex="-1">roomSelectionMode <a class="header-anchor" href="#roomselectionmode" aria-label="Permalink to &quot;roomSelectionMode&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>&#39;checkmark&#39; | &#39;order&#39;</code></li><li><strong>默认值</strong>: <code>&#39;checkmark&#39;</code></li></ul><p>房间选中的指示方式。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>当 <code>roomSelectionMode</code> 为 <code>&#39;checkmark&#39;</code> 时,房间选中后会显示选择指示器。</p><p>当 <code>roomSelectionMode</code> 为 <code>&#39;order&#39;</code> 时,房间选中后会显示清扫顺序数字。</p></div><h2 id="selectroomids" tabindex="-1">selectRoomIds <a class="header-anchor" href="#selectroomids" aria-label="Permalink to &quot;selectRoomIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>选中的房间ID列表。只有当 <code>enableRoomSelection</code> 为 <code>true</code> 时,这个值才会生效。</p><h2 id="selectedcarpetids" tabindex="-1">selectedCarpetIds <a class="header-anchor" href="#selectedcarpetids" aria-label="Permalink to &quot;selectedCarpetIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>选中的地毯ID列表。</p><h2 id="showroomproperty" tabindex="-1">showRoomProperty <a class="header-anchor" href="#showroomproperty" aria-label="Permalink to &quot;showRoomProperty&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示房间属性。</p><h2 id="showroomorder" tabindex="-1">showRoomOrder <a class="header-anchor" href="#showroomorder" aria-label="Permalink to &quot;showRoomOrder&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间清扫顺序。</p><h2 id="showroomname" tabindex="-1">showRoomName <a class="header-anchor" href="#showroomname" aria-label="Permalink to &quot;showRoomName&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间名称。</p><h2 id="showroomtype" tabindex="-1">showRoomType <a class="header-anchor" href="#showroomtype" aria-label="Permalink to &quot;showRoomType&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间类型图标。</p><h2 id="showpath" tabindex="-1">showPath <a class="header-anchor" href="#showpath" aria-label="Permalink to &quot;showPath&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示机器人路径。</p><h2 id="showrobot" tabindex="-1">showRobot <a class="header-anchor" href="#showrobot" aria-label="Permalink to &quot;showRobot&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示扫地机器人。</p><h2 id="showchargingstation" tabindex="-1">showChargingStation <a class="header-anchor" href="#showchargingstation" aria-label="Permalink to &quot;showChargingStation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示充电桩。</p><h2 id="showroomfloortype" tabindex="-1">showRoomFloorType <a class="header-anchor" href="#showroomfloortype" aria-label="Permalink to &quot;showRoomFloorType&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间地板材质。</p><h2 id="showcarpet" tabindex="-1">showCarpet <a class="header-anchor" href="#showcarpet" aria-label="Permalink to &quot;showCarpet&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示地毯。</p><h2 id="showdetectedobjects" tabindex="-1">showDetectedObjects <a class="header-anchor" href="#showdetectedobjects" aria-label="Permalink to &quot;showDetectedObjects&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示 AI 检测物体。</p><h2 id="showfurnitures" tabindex="-1">showFurnitures <a class="header-anchor" href="#showfurnitures" aria-label="Permalink to &quot;showFurnitures&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示家具。</p><h2 id="showcustomcarpets" tabindex="-1">showCustomCarpets <a class="header-anchor" href="#showcustomcarpets" aria-label="Permalink to &quot;showCustomCarpets&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示自定义地毯。</p><h2 id="showchargingstationring" tabindex="-1">showChargingStationRing <a class="header-anchor" href="#showchargingstationring" aria-label="Permalink to &quot;showChargingStationRing&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示充电桩预警圈。</p><h2 id="showrobotring" tabindex="-1">showRobotRing <a class="header-anchor" href="#showrobotring" aria-label="Permalink to &quot;showRobotRing&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人预警圈。</p><h2 id="showrobotsleepanimation" tabindex="-1">showRobotSleepAnimation <a class="header-anchor" href="#showrobotsleepanimation" aria-label="Permalink to &quot;showRobotSleepAnimation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人睡眠动画。</p><h2 id="showrobotpulsecircle" tabindex="-1">showRobotPulseCircle <a class="header-anchor" href="#showrobotpulsecircle" aria-label="Permalink to &quot;showRobotPulseCircle&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人脉冲圈(呼吸效果)。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>机器人脉冲圈会在机器人图标下方显示一个呼吸动画效果,可用于充电等状态的视觉提示。</p></div><h2 id="unit" tabindex="-1">unit <a class="header-anchor" href="#unit" aria-label="Permalink to &quot;unit&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>meter | feet | centimeter</code></li><li><strong>默认值</strong>: <code>&#39;meter&#39;</code></li></ul><p>尺寸标签单位。</p><p>尺寸标签的显示会根据这个单位进行转换计算。</p><h2 id="unitlabel" tabindex="-1">unitLabel <a class="header-anchor" href="#unitlabel" aria-label="Permalink to &quot;unitLabel&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string</code></li><li><strong>默认值</strong>: <code>&#39;m&#39;</code></li></ul><p>尺寸标签单位显示文本。</p>`,121)])])}const u=e(t,[["render",n]]);export{g as __pageData,u as default};
20
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="dividingroomid" tabindex="-1">dividingRoomId <a class="header-anchor" href="#dividingroomid" aria-label="Permalink to &quot;dividingRoomId&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number</code></li><li><strong>默认值</strong>: <code>-1</code></li></ul><p>正在分割的房间ID。</p><p>你可以通过将 <code>dividingRoomId</code> 设置为 <code>-1</code> 来移除分割线。</p><h2 id="enableroomselection" tabindex="-1">enableRoomSelection <a class="header-anchor" href="#enableroomselection" aria-label="Permalink to &quot;enableRoomSelection&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否启用房间选择功能</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><ul><li><strong>当 <code>enableRoomSelection</code> 为 <code>false</code> 时</strong>:房间使用普通展示模式的颜色(对应 <code>room.colors.normal</code>,若未定义则使用 <code>room.colors.active</code>)。</li><li><strong>当 <code>enableRoomSelection</code> 为 <code>true</code> 时</strong>:进入房间选择模式。房间颜色根据是否被选中(是否在 <code>selectRoomIds</code> 中)在 <code>active</code> 和 <code>inactive</code> 之间切换。</li></ul></div><h2 id="enableinteraction" tabindex="-1">enableInteraction <a class="header-anchor" href="#enableinteraction" aria-label="Permalink to &quot;enableInteraction&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否启用交互功能。</p><p>当 <code>enableInteraction</code> 为 <code>false</code> 时,地图不会响应任何交互事件。</p><h2 id="enablemapclickcapture" tabindex="-1">enableMapClickCapture <a class="header-anchor" href="#enablemapclickcapture" aria-label="Permalink to &quot;enableMapClickCapture&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否启用地图点击捕获功能。</p><p>开启地图点击捕获功能后,用户点击地图时会触发 <code>onClickMap</code> 回调。</p><h2 id="editingforbiddensweepzoneids" tabindex="-1">editingForbiddenSweepZoneIds <a class="header-anchor" href="#editingforbiddensweepzoneids" aria-label="Permalink to &quot;editingForbiddenSweepZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的禁扫区域ID列表。</p><h2 id="editingforbiddenmopzoneids" tabindex="-1">editingForbiddenMopZoneIds <a class="header-anchor" href="#editingforbiddenmopzoneids" aria-label="Permalink to &quot;editingForbiddenMopZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的禁拖区域ID列表。</p><h2 id="editingcleanzoneids" tabindex="-1">editingCleanZoneIds <a class="header-anchor" href="#editingcleanzoneids" aria-label="Permalink to &quot;editingCleanZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的清扫区域ID列表。</p><h2 id="editingcustomzoneids" tabindex="-1">editingCustomZoneIds <a class="header-anchor" href="#editingcustomzoneids" aria-label="Permalink to &quot;editingCustomZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>Record&lt;string, string[]&gt;</code></li><li><strong>默认值</strong>: <code>{}</code></li></ul><p>正在编辑的自定义区域ID列表,按自定义类型分组。key 为通过 <a href="/reference/config.html#customzonetypes"><code>config.customZoneTypes</code></a> 声明的类型名,value 为该类型下处于编辑态的区域 ID 列表。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>三种内置区域(forbiddenSweepZone / forbiddenMopZone / cleanZone)继续使用各自的 <code>editingForbiddenSweepZoneIds</code> / <code>editingForbiddenMopZoneIds</code> / <code>editingCleanZoneIds</code>,不会出现在这里。</p></div><h2 id="editingvirtualwallids" tabindex="-1">editingVirtualWallIds <a class="header-anchor" href="#editingvirtualwallids" aria-label="Permalink to &quot;editingVirtualWallIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的虚拟墙ID列表。</p><h2 id="editingspotids" tabindex="-1">editingSpotIds <a class="header-anchor" href="#editingspotids" aria-label="Permalink to &quot;editingSpotIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的定点清扫ID列表。</p><h2 id="editingroomanchorids" tabindex="-1">editingRoomAnchorIds <a class="header-anchor" href="#editingroomanchorids" aria-label="Permalink to &quot;editingRoomAnchorIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的房间锚点ID列表。与 <code>editingSpotIds</code> 相互独立、互不影响:房间锚点仅由本列表驱动编辑态(可拖拽;携带 <code>roomId</code> 时被硬约束在所属房间内)。</p><h2 id="editingwaypointids" tabindex="-1">editingWayPointIds <a class="header-anchor" href="#editingwaypointids" aria-label="Permalink to &quot;editingWayPointIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的途径点ID列表。</p><h2 id="editingcarpetids" tabindex="-1">editingCarpetIds <a class="header-anchor" href="#editingcarpetids" aria-label="Permalink to &quot;editingCarpetIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的地毯ID列表。</p><h2 id="editingfurnitureids" tabindex="-1">editingFurnitureIds <a class="header-anchor" href="#editingfurnitureids" aria-label="Permalink to &quot;editingFurnitureIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的家具ID列表。</p><h2 id="maprotation" tabindex="-1">mapRotation <a class="header-anchor" href="#maprotation" aria-label="Permalink to &quot;mapRotation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number</code></li><li><strong>默认值</strong>: <code>0</code></li><li><strong>单位</strong>: <code>度(°)</code></li></ul><p>地图旋转角度。</p><h2 id="roompropertyfoldids" tabindex="-1">roomPropertyFoldIds <a class="header-anchor" href="#roompropertyfoldids" aria-label="Permalink to &quot;roomPropertyFoldIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>处于折叠状态的房间ID列表。</p><h2 id="roomselectionmode" tabindex="-1">roomSelectionMode <a class="header-anchor" href="#roomselectionmode" aria-label="Permalink to &quot;roomSelectionMode&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>&#39;checkmark&#39; | &#39;order&#39;</code></li><li><strong>默认值</strong>: <code>&#39;checkmark&#39;</code></li></ul><p>房间选中的指示方式。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>当 <code>roomSelectionMode</code> 为 <code>&#39;checkmark&#39;</code> 时,房间选中后会显示选择指示器。</p><p>当 <code>roomSelectionMode</code> 为 <code>&#39;order&#39;</code> 时,房间选中后会显示清扫顺序数字。</p></div><h2 id="selectroomids" tabindex="-1">selectRoomIds <a class="header-anchor" href="#selectroomids" aria-label="Permalink to &quot;selectRoomIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>选中的房间ID列表。只有当 <code>enableRoomSelection</code> 为 <code>true</code> 时,这个值才会生效。</p><h2 id="selectedcarpetids" tabindex="-1">selectedCarpetIds <a class="header-anchor" href="#selectedcarpetids" aria-label="Permalink to &quot;selectedCarpetIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>选中的地毯ID列表。</p><h2 id="showroomproperty" tabindex="-1">showRoomProperty <a class="header-anchor" href="#showroomproperty" aria-label="Permalink to &quot;showRoomProperty&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示房间属性。</p><h2 id="showroomorder" tabindex="-1">showRoomOrder <a class="header-anchor" href="#showroomorder" aria-label="Permalink to &quot;showRoomOrder&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间清扫顺序。</p><h2 id="showroomname" tabindex="-1">showRoomName <a class="header-anchor" href="#showroomname" aria-label="Permalink to &quot;showRoomName&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间名称。</p><h2 id="showroomtype" tabindex="-1">showRoomType <a class="header-anchor" href="#showroomtype" aria-label="Permalink to &quot;showRoomType&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间类型图标。</p><h2 id="showpath" tabindex="-1">showPath <a class="header-anchor" href="#showpath" aria-label="Permalink to &quot;showPath&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示机器人路径。</p><h2 id="showrobot" tabindex="-1">showRobot <a class="header-anchor" href="#showrobot" aria-label="Permalink to &quot;showRobot&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示扫地机器人。</p><h2 id="showchargingstation" tabindex="-1">showChargingStation <a class="header-anchor" href="#showchargingstation" aria-label="Permalink to &quot;showChargingStation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示充电桩。</p><h2 id="showroomfloortype" tabindex="-1">showRoomFloorType <a class="header-anchor" href="#showroomfloortype" aria-label="Permalink to &quot;showRoomFloorType&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间地板材质。</p><h2 id="showcarpet" tabindex="-1">showCarpet <a class="header-anchor" href="#showcarpet" aria-label="Permalink to &quot;showCarpet&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示地毯。</p><h2 id="showdetectedobjects" tabindex="-1">showDetectedObjects <a class="header-anchor" href="#showdetectedobjects" aria-label="Permalink to &quot;showDetectedObjects&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示 AI 检测物体。</p><h2 id="showfurnitures" tabindex="-1">showFurnitures <a class="header-anchor" href="#showfurnitures" aria-label="Permalink to &quot;showFurnitures&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示家具。</p><h2 id="showcustomcarpets" tabindex="-1">showCustomCarpets <a class="header-anchor" href="#showcustomcarpets" aria-label="Permalink to &quot;showCustomCarpets&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示自定义地毯。</p><h2 id="showchargingstationring" tabindex="-1">showChargingStationRing <a class="header-anchor" href="#showchargingstationring" aria-label="Permalink to &quot;showChargingStationRing&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示充电桩预警圈。</p><h2 id="showrobotring" tabindex="-1">showRobotRing <a class="header-anchor" href="#showrobotring" aria-label="Permalink to &quot;showRobotRing&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人预警圈。</p><h2 id="showrobotsleepanimation" tabindex="-1">showRobotSleepAnimation <a class="header-anchor" href="#showrobotsleepanimation" aria-label="Permalink to &quot;showRobotSleepAnimation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人睡眠动画。</p><h2 id="showrobotpulsecircle" tabindex="-1">showRobotPulseCircle <a class="header-anchor" href="#showrobotpulsecircle" aria-label="Permalink to &quot;showRobotPulseCircle&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人脉冲圈(呼吸效果)。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>机器人脉冲圈会在机器人图标下方显示一个呼吸动画效果,可用于充电等状态的视觉提示。</p></div><h2 id="unit" tabindex="-1">unit <a class="header-anchor" href="#unit" aria-label="Permalink to &quot;unit&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>meter | feet | centimeter</code></li><li><strong>默认值</strong>: <code>&#39;meter&#39;</code></li></ul><p>尺寸标签单位。</p><p>尺寸标签的显示会根据这个单位进行转换计算。</p><h2 id="unitlabel" tabindex="-1">unitLabel <a class="header-anchor" href="#unitlabel" aria-label="Permalink to &quot;unitLabel&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string</code></li><li><strong>默认值</strong>: <code>&#39;m&#39;</code></li></ul><p>尺寸标签单位显示文本。</p>`,124)])])}const u=e(t,[["render",n]]);export{g as __pageData,u as default};
@@ -1 +1 @@
1
- import{_ as e,c as i,o as s,aq as a}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"运行时配置","description":"","frontmatter":{},"headers":[],"relativePath":"reference/runtime.md","filePath":"reference/runtime.md","lastUpdated":1777535786000}'),t={name:"reference/runtime.md"};function n(l,o,r,d,c,h){return s(),i("div",null,[...o[0]||(o[0]=[a("",121)])])}const u=e(t,[["render",n]]);export{g as __pageData,u as default};
1
+ import{_ as e,c as i,o as s,aq as a}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"运行时配置","description":"","frontmatter":{},"headers":[],"relativePath":"reference/runtime.md","filePath":"reference/runtime.md","lastUpdated":1783589819000}'),t={name:"reference/runtime.md"};function n(l,o,r,d,c,h){return s(),i("div",null,[...o[0]||(o[0]=[a("",124)])])}const u=e(t,[["render",n]]);export{g as __pageData,u as default};
@@ -1,4 +1,4 @@
1
- import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const y=JSON.parse('{"title":"类型定义","description":"","frontmatter":{},"headers":[],"relativePath":"reference/types.md","filePath":"reference/types.md","lastUpdated":1779971049000}'),h={name:"reference/types.md"};function l(t,s,k,e,r,d){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>了解 RobotMap 支持的各种数据类型和格式。</p><h2 id="point" tabindex="-1">Point <a class="header-anchor" href="#point" aria-label="Permalink to &quot;Point {#point}&quot;">​</a></h2><p>坐标点类型。</p><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</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;">type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
1
+ import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const y=JSON.parse('{"title":"类型定义","description":"","frontmatter":{},"headers":[],"relativePath":"reference/types.md","filePath":"reference/types.md","lastUpdated":1781611052000}'),l={name:"reference/types.md"};function h(t,s,k,e,r,d){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>了解 RobotMap 支持的各种数据类型和格式。</p><h2 id="point" tabindex="-1">Point <a class="header-anchor" href="#point" aria-label="Permalink to &quot;Point {#point}&quot;">​</a></h2><p>坐标点类型。</p><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</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;">type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
2
2
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** X坐标 */</span></span>
3
3
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> x</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> number</span></span>
4
4
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** Y坐标 */</span></span>
@@ -124,10 +124,19 @@ import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const y
124
124
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 自定义数据 */</span></span>
125
125
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> customData</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
126
126
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="roomdata" tabindex="-1">RoomData <a class="header-anchor" href="#roomdata" aria-label="Permalink to &quot;RoomData {#roomdata}&quot;">​</a></h2><p>房间显示数据类型。</p><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</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;">type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> RoomData</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> RoomProperty</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &amp;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
127
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 房间中心点 */</span></span>
127
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 房间中心点(地图坐标系,绝对坐标) */</span></span>
128
128
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> centerPoint</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span></span>
129
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 房间中心点(机器坐标系,相对 origin,与 Zone / VirtualWall 一致) */</span></span>
130
+ <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> relativeCenterPoint</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span></span>
129
131
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 索引 */</span></span>
130
132
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> index</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> number</span></span>
133
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="roomcenterinfo" tabindex="-1">RoomCenterInfo <a class="header-anchor" href="#roomcenterinfo" aria-label="Permalink to &quot;RoomCenterInfo {#roomcenterinfo}&quot;">​</a></h2><p>房间中心点信息类型。由地图几何驱动,随 <a href="/reference/callbacks.html#onroomsdrawed"><code>onRoomsDrawed</code></a> 回调抛出,同时提供两种坐标表达。</p><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</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;">type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> RoomCenterInfo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
134
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 房间ID */</span></span>
135
+ <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> id</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> number</span></span>
136
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 中心点(地图坐标系,绝对坐标) */</span></span>
137
+ <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> centerPoint</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span></span>
138
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 中心点(机器坐标系,相对 origin,与 Zone / VirtualWall 一致) */</span></span>
139
+ <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> relativeCenterPoint</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span></span>
131
140
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="imagecustomelementparam" tabindex="-1">ImageCustomElementParam <a class="header-anchor" href="#imagecustomelementparam" aria-label="Permalink to &quot;ImageCustomElementParam {#imagecustomelementparam}&quot;">​</a></h2><p>自定义元素参数类型。</p><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</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;">type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ImageCustomElementParam</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
132
141
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 元素ID */</span></span>
133
142
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> id</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> string</span></span>
@@ -154,6 +163,15 @@ import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const y
154
163
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 尺寸是否固定 */</span></span>
155
164
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> sizeFixed</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span></span>
156
165
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /**</span></span>
166
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 屏幕像素偏移(仅 sizeFixed: true 生效)</span></span>
167
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> *</span></span>
168
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 在 (x, y) 锚点基础上再按屏幕像素平移,该偏移不随地图缩放/旋转变化。</span></span>
169
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * - x 正值向右,负值向左</span></span>
170
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * - y 正值向下,负值向上</span></span>
171
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 例:贴在房间属性气泡上方 → { x: 12, y: -10 }</span></span>
172
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span></span>
173
+ <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> pixelOffset</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span></span>
174
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /**</span></span>
157
175
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 锚点位置</span></span>
158
176
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> *</span></span>
159
177
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 定义图片的锚点位置,用于控制图片相对于坐标点的对齐方式</span></span>
@@ -189,6 +207,14 @@ import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const y
189
207
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 尺寸是否固定 */</span></span>
190
208
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> sizeFixed</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span></span>
191
209
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /**</span></span>
210
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 屏幕像素偏移(仅 sizeFixed: true 生效)</span></span>
211
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> *</span></span>
212
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 在 (x, y) 锚点基础上再按屏幕像素平移,该偏移不随地图缩放/旋转变化。</span></span>
213
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * - x 正值向右,负值向左</span></span>
214
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * - y 正值向下,负值向上</span></span>
215
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span></span>
216
+ <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> pixelOffset</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span></span>
217
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /**</span></span>
192
218
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 锚点位置</span></span>
193
219
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> *</span></span>
194
220
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 定义GIF的锚点位置,用于控制GIF相对于坐标点的对齐方式</span></span>
@@ -223,6 +249,14 @@ import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const y
223
249
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> height</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> number</span></span>
224
250
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 尺寸是否固定 */</span></span>
225
251
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> sizeFixed</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span></span>
252
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /**</span></span>
253
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 屏幕像素偏移(仅 sizeFixed: true 生效)</span></span>
254
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> *</span></span>
255
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 在 (x, y) 锚点基础上再按屏幕像素平移,该偏移不随地图缩放/旋转变化。</span></span>
256
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * - x 正值向右,负值向左</span></span>
257
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * - y 正值向下,负值向上</span></span>
258
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span></span>
259
+ <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> pixelOffset</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span></span>
226
260
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="customelementparam" tabindex="-1">CustomElementParam <a class="header-anchor" href="#customelementparam" aria-label="Permalink to &quot;CustomElementParam {#customelementparam}&quot;">​</a></h2><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</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;">type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CustomElementParam</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span></span>
227
261
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ImageCustomElementParam</span></span>
228
262
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> GifCustomElementParam</span></span>
@@ -255,4 +289,4 @@ import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const y
255
289
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="heatmappoint" tabindex="-1">HeatmapPoint <a class="header-anchor" href="#heatmappoint" aria-label="Permalink to &quot;HeatmapPoint {#heatmappoint}&quot;">​</a></h2><p>热力图数据点类型。</p><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</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;">type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> HeatmapPoint</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &amp;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
256
290
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 信号强度 */</span></span>
257
291
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> signal</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> number</span></span>
258
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,65)])])}const F=i(h,[["render",l]]);export{y as __pageData,F as default};
292
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,68)])])}const F=i(l,[["render",h]]);export{y as __pageData,F as default};
@@ -0,0 +1 @@
1
+ import{_ as i,c as a,o as n,aq as p}from"./chunks/framework.CBLqO2Q1.js";const y=JSON.parse('{"title":"类型定义","description":"","frontmatter":{},"headers":[],"relativePath":"reference/types.md","filePath":"reference/types.md","lastUpdated":1781611052000}'),l={name:"reference/types.md"};function h(t,s,k,e,r,d){return n(),a("div",null,[...s[0]||(s[0]=[p("",68)])])}const F=i(l,[["render",h]]);export{y as __pageData,F as default};
@@ -9,11 +9,11 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.hiWmcVfN.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.BXGPC0v4.js"></script>
12
+ <script type="module" src="/assets/app.Bgoj8KA9.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.DUpgtHaE.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.CB2YL8Lx.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.CBLqO2Q1.js">
16
- <link rel="modulepreload" href="/assets/guide_advanced-usage.md.DNWCmYfB.lean.js">
16
+ <link rel="modulepreload" href="/assets/guide_advanced-usage.md.B1LO3kNP.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
18
18
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
19
19
  </head>
@@ -1078,7 +1078,38 @@
1078
1078
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // ... 其他属性</span></span>
1079
1079
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /&gt;</span></span>
1080
1080
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> )</span></span>
1081
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>自定义元素的 <code>sizeFixed</code> 默认值为 <code>true</code>,表示元素的尺寸不会跟随地图缩放。</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>注意,如果将自定义 <strong>html</strong> 元素的 <code>sizeFixed</code> 设置为 <code>false</code>,请不要传入 <code>width</code> 和 <code>height</code> 属性,否则可能导致问题。</p></div><h2 id="截图" tabindex="-1">截图 <a class="header-anchor" href="#截图" aria-label="Permalink to &quot;截图&quot;">​</a></h2><h3 id="为当前地图截图" tabindex="-1">为当前地图截图 <a class="header-anchor" href="#为当前地图截图" aria-label="Permalink to &quot;为当前地图截图&quot;">​</a></h3><p>你可以调用 <code>snapshot</code> 方法为当前地图截图。截图时会自动添加一个临时的背景层以保证颜色渲染正确。</p><div class="language-tsx vp-adaptive-theme"><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 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;react&#39;</span></span>
1081
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>自定义元素的 <code>sizeFixed</code> 默认值为 <code>true</code>,表示元素的尺寸不会跟随地图缩放。</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>注意,如果将自定义 <strong>html</strong> 元素的 <code>sizeFixed</code> 设置为 <code>false</code>,请不要传入 <code>width</code> 和 <code>height</code> 属性,否则可能导致问题。</p></div><h3 id="固定像素偏移-pixeloffset" tabindex="-1">固定像素偏移 pixelOffset <a class="header-anchor" href="#固定像素偏移-pixeloffset" aria-label="Permalink to &quot;固定像素偏移 pixelOffset&quot;">​</a></h3><p>当你需要把自定义元素<strong>稳定地贴在某个锚点旁边</strong>(例如紧挨房间属性气泡),常见做法是把像素偏移直接加到 <code>x</code> / <code>y</code> 上。但 <code>x</code> / <code>y</code> 是<strong>地图坐标</strong>,地图缩放后这段偏移也会随之被放大或缩小,元素就会偏离预期位置。</p><p>为此,<code>sizeFixed: true</code> 的元素支持 <code>pixelOffset</code> 字段:它在 <code>x</code> / <code>y</code> 锚点的基础上,再按<strong>屏幕像素</strong>平移指定距离,且该偏移<strong>不随地图缩放或旋转变化</strong>——与房间属性气泡始终停留在房间名上方固定位置的行为完全一致。</p><p>坐标约定(与 PIXI 屏幕坐标一致):</p><ul><li><code>x</code> 正值向右,负值向左</li><li><code>y</code> 正值向下,负值向上</li></ul><p>下面的例子结合 <a href="/reference/callbacks.html"><code>onRoomsDrawed</code></a> 暴露的房间中心点,把一个图标稳定地贴在房间属性气泡右上方:</p><div class="language-tsx vp-adaptive-theme"><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, { useState } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;react&#39;</span></span>
1082
+ <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>
1083
+ <span class="line"></span>
1084
+ <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> MapPage</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</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>
1085
+ <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">elements</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">setElements</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> useState</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">([])</span></span>
1086
+ <span class="line"></span>
1087
+ <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> handleRoomsDrawed</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">rooms</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>
1088
+ <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> setElements</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span></span>
1089
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> rooms.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">map</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">((</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">room</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>
1090
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> id: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">`room-badge-${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">room</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">.</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">id</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}`</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
1091
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;image&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
1092
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> src: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;xxx&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
1093
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> sizeFixed: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
1094
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 锚点直接用房间中心点(机器坐标系,与 Zone / VirtualWall 一致)</span></span>
1095
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> x: room.relativeCenterPoint.x,</span></span>
1096
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> y: room.relativeCenterPoint.y,</span></span>
1097
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 在屏幕上固定向右 12px、向上 10px,缩放/旋转都不漂移</span></span>
1098
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> pixelOffset: { x: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">12</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, y: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
1099
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> width: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
1100
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> height: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
1101
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> })),</span></span>
1102
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> )</span></span>
1103
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
1104
+ <span class="line"></span>
1105
+ <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span></span>
1106
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">RobotMap</span></span>
1107
+ <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> customElements</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{elements}</span></span>
1108
+ <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> onRoomsDrawed</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{handleRoomsDrawed}</span></span>
1109
+ <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // ... 其他属性</span></span>
1110
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /&gt;</span></span>
1111
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> )</span></span>
1112
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p><code>pixelOffset</code> 仅在 <code>sizeFixed: true</code> 时生效。<code>sizeFixed</code> 为 <code>false</code>(尺寸随地图缩放)时,固定像素偏移没有自洽语义,该字段会被忽略。</p></div><h2 id="截图" tabindex="-1">截图 <a class="header-anchor" href="#截图" aria-label="Permalink to &quot;截图&quot;">​</a></h2><h3 id="为当前地图截图" tabindex="-1">为当前地图截图 <a class="header-anchor" href="#为当前地图截图" aria-label="Permalink to &quot;为当前地图截图&quot;">​</a></h3><p>你可以调用 <code>snapshot</code> 方法为当前地图截图。截图时会自动添加一个临时的背景层以保证颜色渲染正确。</p><div class="language-tsx vp-adaptive-theme"><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 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;react&#39;</span></span>
1082
1113
  <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>
1083
1114
  <span class="line"></span>
1084
1115
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> MapPage</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</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>
@@ -1182,8 +1213,8 @@
1182
1213
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (mapApi) {</span></span>
1183
1214
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> mapApi.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">forceEndGesture</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()</span></span>
1184
1215
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
1185
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">提示</p><p>地图 SDK 内部已针对双指缩放时的快速松手做了防抖缓冲处理,搭配上述方案可获得最佳手势体验。</p></div></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2026-05-29T02:17:54.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/guide/getting-started.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>快速开始</span><!--]--></a></div><div class="pager" data-v-e257564d><!----></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
1186
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"agents_domain.md\":\"CYB9yWEy\",\"agents_issue-tracker.md\":\"CrjzmXmc\",\"agents_triage-labels.md\":\"Cmw0b5xB\",\"guide_advanced-usage.md\":\"DNWCmYfB\",\"guide_concepts.md\":\"CJ87tk-r\",\"guide_getting-started.md\":\"s0ecK_5b\",\"guide_mcp.md\":\"CabCiX8Z\",\"index.md\":\"wTsFvv0N\",\"plans_2026-03-04-detected-objects-visibility-design.md\":\"Dqboot5W\",\"plans_2026-03-04-show-detected-objects-implementation-plan.md\":\"CDWwQtWj\",\"plans_2026-03-10-simulator-debug-design.md\":\"BZibn7uw\",\"plans_2026-03-10-simulator-events-console-design.md\":\"BVmEzCbR\",\"plans_2026-03-10-simulator-events-console-implementation-plan.md\":\"S2f1zs9-\",\"plans_2026-03-10-simulator-runtime-controls-design.md\":\"mqeNaYgg\",\"plans_2026-03-10-simulator-runtime-controls-implementation-plan.md\":\"BXG1UWFt\",\"plans_2026-03-10-testing-rollout-next-steps-plan.md\":\"CGR6uZic\",\"plans_2026-03-11-simulator-logger-dump-implementation-plan.md\":\"Ck5BGdoX\",\"reference_callbacks.md\":\"FoJwSjMy\",\"reference_config.md\":\"B45KsJB6\",\"reference_data.md\":\"BjBUZrZo\",\"reference_methods.md\":\"CxMQMj53\",\"reference_runtime.md\":\"BBP2J_yR\",\"reference_types.md\":\"BDKGwrGI\",\"reference_utils.md\":\"Dy6XKVWh\",\"simulator_index.md\":\"CF95Y_c9\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,6],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"},{\"text\":\"模拟调试\",\"link\":\"/simulator/\",\"activeMatch\":\"^/simulator/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}],\"/simulator/\":[{\"text\":\"模拟调试\",\"items\":[{\"text\":\"实时模拟调试\",\"link\":\"/simulator/\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
1216
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">提示</p><p>地图 SDK 内部已针对双指缩放时的快速松手做了防抖缓冲处理,搭配上述方案可获得最佳手势体验。</p></div></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2026-06-16T11:57:32.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/guide/getting-started.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>快速开始</span><!--]--></a></div><div class="pager" data-v-e257564d><!----></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
1217
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"agents_domain.md\":\"CYB9yWEy\",\"agents_issue-tracker.md\":\"CrjzmXmc\",\"agents_triage-labels.md\":\"Cmw0b5xB\",\"guide_advanced-usage.md\":\"B1LO3kNP\",\"guide_concepts.md\":\"CJ87tk-r\",\"guide_getting-started.md\":\"CHQim8cP\",\"guide_mcp.md\":\"CabCiX8Z\",\"guide_spot-room-binding.md\":\"CZGLnxCe\",\"index.md\":\"wTsFvv0N\",\"plans_2026-03-04-detected-objects-visibility-design.md\":\"Dqboot5W\",\"plans_2026-03-04-show-detected-objects-implementation-plan.md\":\"CDWwQtWj\",\"plans_2026-03-10-simulator-debug-design.md\":\"BZibn7uw\",\"plans_2026-03-10-simulator-events-console-design.md\":\"BVmEzCbR\",\"plans_2026-03-10-simulator-events-console-implementation-plan.md\":\"S2f1zs9-\",\"plans_2026-03-10-simulator-runtime-controls-design.md\":\"mqeNaYgg\",\"plans_2026-03-10-simulator-runtime-controls-implementation-plan.md\":\"BXG1UWFt\",\"plans_2026-03-10-testing-rollout-next-steps-plan.md\":\"CGR6uZic\",\"plans_2026-03-11-simulator-logger-dump-implementation-plan.md\":\"Ck5BGdoX\",\"reference_callbacks.md\":\"4Y7lqLLW\",\"reference_config.md\":\"Dr5HxVZt\",\"reference_data.md\":\"C3E1VcWx\",\"reference_methods.md\":\"CxMQMj53\",\"reference_runtime.md\":\"CX2K6JLY\",\"reference_types.md\":\"Btpi6Kd9\",\"reference_utils.md\":\"Dy6XKVWh\",\"simulator_index.md\":\"CF95Y_c9\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,6],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"},{\"text\":\"模拟调试\",\"link\":\"/simulator/\",\"activeMatch\":\"^/simulator/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}],\"/simulator/\":[{\"text\":\"模拟调试\",\"items\":[{\"text\":\"实时模拟调试\",\"link\":\"/simulator/\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
1187
1218
 
1188
1219
  </body>
1189
1220
  </html>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.hiWmcVfN.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.BXGPC0v4.js"></script>
12
+ <script type="module" src="/assets/app.Bgoj8KA9.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.DUpgtHaE.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.CB2YL8Lx.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.CBLqO2Q1.js">
16
16
  <link rel="modulepreload" href="/assets/guide_concepts.md.CJ87tk-r.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -21,7 +21,7 @@
21
21
  <div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>Tuya Robot Map</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>首页</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/guide/concepts.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>指南</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/reference/data.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>参考</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/simulator/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>模拟调试</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><!----><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>指南</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/guide/concepts.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>基本概念</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/guide/getting-started.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>快速开始</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/guide/advanced-usage.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>进阶使用</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>页面导航</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _guide_concepts" data-v-39a288b8><div><h1 id="基本概念" tabindex="-1">基本概念 <a class="header-anchor" href="#基本概念" aria-label="Permalink to &quot;基本概念&quot;">​</a></h1><p>了解 Tuya Robot Map 的核心概念。</p><h2 id="核心组件" tabindex="-1">核心组件 <a class="header-anchor" href="#核心组件" aria-label="Permalink to &quot;核心组件&quot;">​</a></h2><p>后续文档中,我们会使用 <code>RobotMap</code> 组件作为示例,你可以根据实际需求选择使用 <code>RobotMap</code> 或 <code>RjsRobotMap</code> 组件。</p><h3 id="robotmap-组件" tabindex="-1">RobotMap 组件 <a class="header-anchor" href="#robotmap-组件" aria-label="Permalink to &quot;RobotMap 组件&quot;">​</a></h3><p>React 地图组件,提供完整的地图渲染和交互功能:</p><div class="language-tsx vp-adaptive-theme"><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:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">RobotMap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /&gt;</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><ul><li><p><code>RobotMap</code> 组件是基于 <a href="https://developer.tuya.com/cn/miniapp/develop/ray/component/open/web-view" target="_blank" rel="noreferrer">WebView</a> 开发的,开发前请详细阅读<a href="https://developer.tuya.com/cn/miniapp/develop/miniapp/component/native-component/native-component" target="_blank" rel="noreferrer">原生组件说明</a>。</p></li><li><p><code>RobotMap</code> 默认铺满全屏,适用于<strong>首页实时地图</strong>等场景,一个页面只能有一个 <code>RobotMap</code> 组件。</p></li><li><p>需要在小程序<code>global.config.ts</code>中配置<code>webviewRoot</code>让小程序能够正确加载<code>RobotMap</code>的资源。</p></li></ul><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</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;">{</span></span>
22
22
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;webviewRoot&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;node_modules/@ray-js/robot-map-sdk/dist-app&quot;</span></span>
23
23
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div></div><h3 id="rjsrobotmap-组件" tabindex="-1">RjsRobotMap 组件 <a class="header-anchor" href="#rjsrobotmap-组件" aria-label="Permalink to &quot;RjsRobotMap 组件&quot;">​</a></h3><p>基于Rjs开发的地图组件,它拥有和 <code>RobotMap</code> 组件相同的Props。</p><div class="language-tsx vp-adaptive-theme"><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:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">RjsRobotMap</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /&gt;</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p><code>RjsRobotMap</code> 基于 <a href="https://developer.tuya.com/cn/miniapp/develop/ray/framework/render" target="_blank" rel="noreferrer">Rjs</a> 开发,它没有原生组件的限制,一个页面可以有多个 <code>RjsRobotMap</code> 组件。适用于<strong>多地图</strong>、<strong>弹窗里的地图</strong> 等场景。</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>引入 <code>RjsRobotMap</code> 对页面加载速度有一定影响。如无必要场景,我们建议始终使用 <code>RobotMap</code> 组件。</p></div><h2 id="坐标系统" tabindex="-1">坐标系统 <a class="header-anchor" href="#坐标系统" aria-label="Permalink to &quot;坐标系统&quot;">​</a></h2><h3 id="地图原点坐标" tabindex="-1">地图原点坐标 <a class="header-anchor" href="#地图原点坐标" aria-label="Permalink to &quot;地图原点坐标&quot;">​</a></h3><p>地图原点是扫地机器人运行过程中确定的参考点,地图上的元素都是基于这个原点计算的相对位置。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>地图原点本身是相对于地图左上角来定位的。例如在一张100 x 100(宽 x 高)的 地图中,如果原点坐标是(20, 80),表示原点位于相对于地图左上角(20, 80)的位置。</p></div><h3 id="地图坐标系" tabindex="-1">地图坐标系 <a class="header-anchor" href="#地图坐标系" aria-label="Permalink to &quot;地图坐标系&quot;">​</a></h3><p>地图坐标系是本 SDK 实际使用的坐标系,用于在地图上渲染和显示各种元素。地图坐标系以地图原点为中心(0, 0):</p><ul><li>X轴:向右为正方向</li><li>Y轴:向下为正方向</li></ul><h4 id="与机器坐标系的不同" tabindex="-1">与机器坐标系的不同 <a class="header-anchor" href="#与机器坐标系的不同" aria-label="Permalink to &quot;与机器坐标系的不同&quot;">​</a></h4><p>需要注意的是,本 SDK 使用的地图坐标系与扫地机器人设备本身使用的机器坐标系在 Y 轴方向上相反:</p><ul><li><p><strong>机器坐标系</strong>(设备使用的坐标系):</p><ul><li>X轴:向右为正方向</li><li>Y轴:向上为正方向</li></ul></li><li><p><strong>地图坐标系</strong>(本 SDK 使用的坐标系):</p><ul><li>X轴:向右为正方向(与机器坐标系一致)</li><li>Y轴:向下为正方向(与机器坐标系相反)</li></ul></li></ul><p>SDK 采用标准的屏幕坐标系(Screen Coordinate System)进行渲染,因此 Y 轴方向与机器坐标系相反。在 SDK 中,如果原点在(0, 0),坐标为(1, 1)的点会渲染在原点的右下方。</p><p>例如,以下元素的坐标均使用地图坐标系:</p><ul><li>充电桩</li><li>清扫路径 (含机器人位置)</li><li>虚拟墙</li><li>禁区</li><li>清扫区域</li><li>分割线</li><li>其他自定义元素</li><li>...</li></ul><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>本文档中,如果未特别说明,涉及到的坐标均指地图坐标系(X向右,Y向下)。</p></div></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-12-30T11:04:05.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><!----></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/guide/getting-started.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>快速开始</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
24
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"agents_domain.md\":\"CYB9yWEy\",\"agents_issue-tracker.md\":\"CrjzmXmc\",\"agents_triage-labels.md\":\"Cmw0b5xB\",\"guide_advanced-usage.md\":\"DNWCmYfB\",\"guide_concepts.md\":\"CJ87tk-r\",\"guide_getting-started.md\":\"s0ecK_5b\",\"guide_mcp.md\":\"CabCiX8Z\",\"index.md\":\"wTsFvv0N\",\"plans_2026-03-04-detected-objects-visibility-design.md\":\"Dqboot5W\",\"plans_2026-03-04-show-detected-objects-implementation-plan.md\":\"CDWwQtWj\",\"plans_2026-03-10-simulator-debug-design.md\":\"BZibn7uw\",\"plans_2026-03-10-simulator-events-console-design.md\":\"BVmEzCbR\",\"plans_2026-03-10-simulator-events-console-implementation-plan.md\":\"S2f1zs9-\",\"plans_2026-03-10-simulator-runtime-controls-design.md\":\"mqeNaYgg\",\"plans_2026-03-10-simulator-runtime-controls-implementation-plan.md\":\"BXG1UWFt\",\"plans_2026-03-10-testing-rollout-next-steps-plan.md\":\"CGR6uZic\",\"plans_2026-03-11-simulator-logger-dump-implementation-plan.md\":\"Ck5BGdoX\",\"reference_callbacks.md\":\"FoJwSjMy\",\"reference_config.md\":\"B45KsJB6\",\"reference_data.md\":\"BjBUZrZo\",\"reference_methods.md\":\"CxMQMj53\",\"reference_runtime.md\":\"BBP2J_yR\",\"reference_types.md\":\"BDKGwrGI\",\"reference_utils.md\":\"Dy6XKVWh\",\"simulator_index.md\":\"CF95Y_c9\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,6],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"},{\"text\":\"模拟调试\",\"link\":\"/simulator/\",\"activeMatch\":\"^/simulator/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}],\"/simulator/\":[{\"text\":\"模拟调试\",\"items\":[{\"text\":\"实时模拟调试\",\"link\":\"/simulator/\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
24
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"agents_domain.md\":\"CYB9yWEy\",\"agents_issue-tracker.md\":\"CrjzmXmc\",\"agents_triage-labels.md\":\"Cmw0b5xB\",\"guide_advanced-usage.md\":\"B1LO3kNP\",\"guide_concepts.md\":\"CJ87tk-r\",\"guide_getting-started.md\":\"CHQim8cP\",\"guide_mcp.md\":\"CabCiX8Z\",\"guide_spot-room-binding.md\":\"CZGLnxCe\",\"index.md\":\"wTsFvv0N\",\"plans_2026-03-04-detected-objects-visibility-design.md\":\"Dqboot5W\",\"plans_2026-03-04-show-detected-objects-implementation-plan.md\":\"CDWwQtWj\",\"plans_2026-03-10-simulator-debug-design.md\":\"BZibn7uw\",\"plans_2026-03-10-simulator-events-console-design.md\":\"BVmEzCbR\",\"plans_2026-03-10-simulator-events-console-implementation-plan.md\":\"S2f1zs9-\",\"plans_2026-03-10-simulator-runtime-controls-design.md\":\"mqeNaYgg\",\"plans_2026-03-10-simulator-runtime-controls-implementation-plan.md\":\"BXG1UWFt\",\"plans_2026-03-10-testing-rollout-next-steps-plan.md\":\"CGR6uZic\",\"plans_2026-03-11-simulator-logger-dump-implementation-plan.md\":\"Ck5BGdoX\",\"reference_callbacks.md\":\"4Y7lqLLW\",\"reference_config.md\":\"Dr5HxVZt\",\"reference_data.md\":\"C3E1VcWx\",\"reference_methods.md\":\"CxMQMj53\",\"reference_runtime.md\":\"CX2K6JLY\",\"reference_types.md\":\"Btpi6Kd9\",\"reference_utils.md\":\"Dy6XKVWh\",\"simulator_index.md\":\"CF95Y_c9\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,6],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"},{\"text\":\"模拟调试\",\"link\":\"/simulator/\",\"activeMatch\":\"^/simulator/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}],\"/simulator/\":[{\"text\":\"模拟调试\",\"items\":[{\"text\":\"实时模拟调试\",\"link\":\"/simulator/\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
25
25
 
26
26
  </body>
27
27
  </html>