news 2026/5/27 19:20:21

第08篇|Index.ets 状态地图:200 多个状态如何支撑四个主入口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第08篇|Index.ets 状态地图:200 多个状态如何支撑四个主入口

这篇围绕地图记忆体验展开,把定位、记录模型、Marker 状态和详情面板放在同一条路径里讲。本篇主题是「Index.ets 状态地图:200 多个状态如何支撑四个主入口」,目标是把源码、效果和工程质量放到同一篇文章里讲透。

本文是 21 天「智能相机开发实战」训练营第 2 天的第 5 篇。

这篇解决什么问题

  • 读懂本篇能力在「双镜记忆相机」中的用户价值。
  • 从源码中定位关键入口,而不是只停留在概念介绍。
  • 把页面效果、状态流转和失败态串成一个可复现的小闭环。

代码来自哪里

  • entry/src/main/ets/pages/Index.ets

本篇优先阅读entry/src/main/ets/pages/Index.ets,下面的片段保留项目中的真实命名,方便你在 DevEco Studio 中直接搜索。

} } @Entry @Component struct Index { @State private activeTab: string = 'map'; @StorageLink('superImage.windowWidthPx') private windowWidthPx: number = 0; @StorageLink('superImage.windowHeightPx') private windowHeightPx: number = 0; @StorageLink('superImage.safeAreaTopPx') private safeAreaTopPx: number = 0; @StorageLink('superImage.safeAreaBottomPx') private safeAreaBottomPx: number = 0; @StorageLink('superImage.isDarkMode') private isDarkMode: boolean = false; @State private selectedMemoryId: string = ''; @State private locationPermissionReady: boolean = false; @State private preciseLocationReady: boolean = false; @State private locationBusy: boolean = false; @State private currentLocationLabel: string = '定位后显示当前回忆点'; @State private currentLocationStatus: string = '定位后自动刷新附近影像记忆'; @State private locationWatcherActive: boolean = false; @State private awarenessStatusText: string = '回忆位置感知待命'; @State private arrivalRecommendationActive: boolean = false; @State private arrivalRecommendationDistance: string = ''; @State private currentLatitude: number = 30.25113; @State private currentLongitude: number = 120.15515; @State private currentLocationFresh: boolean = false; @State private currentLocationAccuracyMeters: number = Number.POSITIVE_INFINITY; @State private scenicAgentQueryText: string = SCENIC_AGENT_DEFAULT_QUERY; @State private scenicAgentQueryVersion: number = 0; @State private scenicAgentStatusText: string = ''; @State private scenicAgentSupportReady: boolean = true; @State private scenicPoiSpots: Array<ScenicPoiSpot> = []; @State private selectedScenicPoiId: string = ''; @State private scenicPoiSearchBusy: boolean = false; @State private holdingHandSide: HoldingHandSide = 'right'; @State private holdingHandAwarenessStatusText: string = '握姿感应待命'; @State private mapReady: boolean = false; @State private mapErrorText: string = ''; @State private showDetailPanel: boolean = false; @State private cameraPermissionReady: boolean = false; @State private cameraCapabilityChecked: boolean = false; @State private dualCameraSupported: boolean = false; @State private cameraStatusText: string = '拍照准备中'; @State private cameraDeviceCount: number = 0; @State private cameraConcurrentProfileCount: number = 0;

源码拆解

  • 先看入口变量或函数:它决定能力从哪个页面、哪个服务或哪个系统配置开始。
  • 再看状态字段:页面上的按钮、提示、加载态通常不是临时文案,而是这些状态的投影。
  • 最后看结果写回:拍摄、定位、AI、同步或分享能力最终都要回到记录模型、页面刷新或用户反馈。

跑出来是什么效果

结合页面效果,本文重点观察:

  • 状态分组图
  • 四 Tab 切换截图
flowchart LR A["页面进入"] --> B["地图控制器就绪"] B --> C["记录坐标同步"] C --> D["Marker/详情联动"]

这张流程图可以直接放在文章中间,用来解释「源码做了什么」和「用户看到了什么」之间的关系。截图则尽量截最终页面,不只截调试日志。

实操步骤

  1. 在 DevEco Studio 打开项目,先搜索本文列出的主文件。
  2. 顺着源码片段中的变量或函数名继续查找调用点。
  3. 真机或预览器运行到对应页面,补一张成功态截图。
  4. 主动制造一次失败态,例如拒绝权限、断网、无数据或能力不支持。
  5. 把成功态、失败态、源码片段和流程图组合成完整文章。

工程质量点

  • 地图控制器只在可见 Tab 中工作,减少生命周期错位。
  • 坐标转换、选中状态和详情面板分层处理,避免点击 Marker 后状态互相覆盖。
  • 定位失败时保留可浏览首页,让应用不是一进来就卡死。
  • 源码截图只截关键函数,不截整屏代码,方便读者跟着定位。
  • 效果图和流程图一一对应,避免只讲原理却看不到用户结果。

质量分自评

维度分值本篇检查点
源码准确度28/30代码片段来自项目文件,变量名和函数名保持原样。
效果可见性22/25页面效果与流程图能说明从点击到结果的路径。
实操完整度19/20读者能按文章复现一个最小操作闭环。
工程质量13/15覆盖失败态、状态边界或隐私边界中的关键点。
表达清晰度10/10标题、截图说明和源码说明互相对齐。
合计92/100达到训练营发布质量线。

今日作业

  1. 拍摄或导入一条带位置的记录,观察地图 Marker 是否出现。
  2. 点击 Marker 后记录状态字段变化,补充一张前后对比图。
  3. 把定位失败时的默认地图体验写成一段用户提示。

完成作业后,下一篇继续沿着同一条源码路径往下走:先做出效果,再把工程边界讲清楚。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 19:19:12

TEAPOT:基于GLOSS约束的迁移学习在室内定位中的应用与实战

1. 项目概述&#xff1a;当室内定位遇上迁移学习 在室内定位这个领域里&#xff0c;我们常常面临一个令人头疼的“数据诅咒”&#xff1a;辛辛苦苦在一个环境里采集了大量Wi-Fi指纹数据&#xff0c;训练出一个精度不错的定位模型。可一旦换个时间、换个设备&#xff0c;甚至只是…

作者头像 李华
网站建设 2026/5/27 19:12:02

修图APP哪个好用像素蛋糕技术破局重构移动端修图标准

移动端修图的技术演进&#xff0c;始终围绕“专业度”与“便捷性”的平衡展开。在“修图APP哪个好用”的行业探讨中&#xff0c;多数产品陷入“功能堆砌”的误区&#xff0c;却未能从底层技术突破移动端修图的固有瓶颈。像素蛋糕手机版的出现&#xff0c;以核心技术创新打破行业…

作者头像 李华
网站建设 2026/5/27 19:09:22

别再只会用集成芯片了!手把手教你为MOS管设计图腾柱驱动电路(附Rg选型避坑)

从零构建MOS管图腾柱驱动电路&#xff1a;三极管配对与Rg选型实战指南 当你的电源设计遭遇MOS管开关损耗高、驱动不足等痛点时&#xff0c;集成驱动芯片可能已无法满足需求。这时&#xff0c;自建图腾柱驱动电路便成为硬件工程师的进阶必修课。本文将带你深入理解图腾柱电路的核…

作者头像 李华