4.3 KiB
4.3 KiB
Codex Prompt 版:NavSea Pickup 当前点击解读迁移
请在当前 React + MapLibre 项目中,实现 NavSea 海图的 pickup “当前点击解读”。
目标
把 /root/sourceserver/pbf 仓库里当前 web 测试页上的点击解释逻辑,迁移到当前 React 前端项目里。
不要只给方案,请直接完成实现。
必须先阅读的参考文件
请先阅读下面这些文件,再开始改代码:
/root/sourceserver/pbf/Codex_指令_NavSea_Pickup_当前点击解读_迁移到_React_MapLibre.md/root/sourceserver/pbf/src/pbf/navsea-pickup-test-karatsu-20nm.html/root/sourceserver/pbf/src/pbf/navsea-pickup-interpreter.ts/root/sourceserver/pbf/src/pbf/navsea-pickup-rules.v1.json/root/sourceserver/pbf/NavSea_Native_Pickup_ReactNative_MapLibre_实现说明.md
核心要求
1. 点击结果必须分成两类
海面/露出物海底信息
规则:
- 只要用户点到了看得见的具体对象,就优先按对象解释
- 只有在没有明确命中对象,或更适合按海底信息解释时,才回退到海底信息
2. 必须复用当前规则,不要另造一套
- 使用:
navsea-pickup-rules.v1.json
- 使用:
navsea-pickup-interpreter.ts的结构或直接移植其逻辑
不要重新发明:
- 图层名单
- 对象分类
- title/detail/render 规则
3. 查询方式必须保留双阶段
必须保留:
exact point querybbox query
当前规则:
exact使用:area + primary + info
bbox使用:primary + info
4. “附近”必须按真实距离,不允许再用固定像素作为业务定义
当前业务定义:
附近 = 100 米内
正确做法:
- 把
100m换算成当前 zoom 下的屏幕半径 - 用这个半径做
queryRenderedFeatures - 再按真实
distance_m <= 100二次过滤
5. 必须实现“当前点击解读”展示数据
至少输出下面这些字段:
结果类型主显示当前水深物体名水底情况判断理由补充提示
6. “判断理由”必须保留
不要把判断做成黑箱。
至少要能说明:
- 当前水深取自哪个最近可见深度
100 米内深度样本范围和跨度- 附近等深线数量
- 深度标签数量
- 海底辅助线数量
- 附近结构或底质
7. 建筑物、陆地、地标不能被海底解释吞掉
必须确保下面这些可见对象优先按对象解释:
land-arealand-structures-arealand-structures-linecoast-structures-areacoast-structures-linefacility-pointslandmark-pointslandmark-point-fallbackbridge-area
8. 用户文案要简单
不要把内部术语直接给普通用户。
允许内部调试保留:
坡折槽脊bathymetry
但最终展示优先用普通用户能懂的话,比如:
这里水底起伏比较明显,像一道坎。这里像水底一条沟的边上。这里像水底一个小包或小凸起边上。这里水底看起来比较平。这附近像礁边,鱼容易沿边活动。当前位置只有少量海底辅助线证据,暂不判断明显坎沟。
推荐拆分
请至少实现:
- 一个
pickup rules loader - 一个
pickup interpreter - 一个
depth context service - 一个
terrain interpretation service - 一个
friendly click interpretation service - 一个 React 组件或 hook,把 map 点击接进这套逻辑
- 一个展示
当前点击解读的 panel
不要做的事
- 不要重新设计一套新的 pickup 体系
- 不要删掉
判断理由 - 不要把所有点击都优先解释成海底
- 不要把“附近”改回固定
px - 不要为了“更聪明”擅自引入复杂插值算法
验收标准
实现完成后,至少满足:
- 点到灯塔、灯标、浮标、建筑物、地标、防波堤、栈桥、桥梁、陆地时:
- 优先返回具体对象
- 点到空白水域时:
- 返回海底信息
- 不是直接返回空
- “附近”稳定定义为:
100 米内
- “当前水深”和“判断理由”不互相打架
- 页面不会再出现:
- 明明点到建筑物,却解释成海底
交付要求
完成后请给出:
- 改了哪些文件
- 主要实现了什么
- 如何在当前项目里接入
- 还剩哪些限制或待确认点