ILocationProvider
数据源接口(坐标 + 显示名)
基本信息
| 属性 | 值 |
|---|---|
| 路径 | com.gtnewhorizons.navigator.api.model.locations.ILocationProvider |
| 行数 | 41 |
| 类型 | interface(含 3 个 default 方法) |
| 子接口 | IWaypointAndLocationProvider |
默认 identity = 打包区块坐标
源码注释明写
(ILocationProvider.java:8-10):
The default identity is its packed chunk position, so it is appropriate for chunk-grid data and one element per …
default long toLong() { ... } // :27-30
default int getChunkX() { ... } // :32-35
default int getChunkZ() { ... } // :37-40
| 方法 | 行 | 语义 |
|---|---|---|
toLong() |
:27-30 |
identity 键 = 打包区块位置 |
getChunkX() |
:32-35 |
从 toLong() 解出区块 X |
getChunkZ() |
:37-40 |
从 toLong() 解出区块 Z |
⚠️ 三个 default 方法都基于 toLong() ——
即只要实现 toLong() 就自动获得区块坐标反解,
符合「区块网格、每区块一个元素」的场景。
⚠️ 不符合的场景需覆写 —— 所以才有
addExtraLocation(见 LayerManager 的 :494-498)
支持非区块网格的数据点。
「每区块一个元素」的限制来自这套默认 identity。
抽象方法
源码注释(:8-10)末尾还提到接口需要提供
数据点的坐标与显示信息。消费方实现本接口后,
LayerManager 的 generateLocation* 系列
(5 个重载)返回它。
与其它接口的关系
| 接口 | 行 | 关系 |
|---|---|---|
| 本接口 | :11 |
基础数据点 |
| IWaypointAndLocationProvider | :11 |
extends 本接口 + 路点能力 |
⚠️ 本接口不提供 waypoint 方法 —— 路点能力在 WaypointManager(抽象类)里, 而 IWaypointAndLocationProvider 把两者桥接起来。
在缓存链中的角色
ILocationProvider.toLong() ← identity
↓
LayerRenderer.dimCachedRenderSteps ← 维度 → Long → RenderStep
↓
LayerManager.getCurrentDimCache() ← Long2ObjectMap
见 LayerRenderer 与 LayerManager 的缓存字段。
相关
- IWaypointAndLocationProvider - 子接口
- LayerManager -
generateLocation*/invalidateLocation的元素类型 - LayerRenderer - 缓存键的来源
- MapMarker - 由
ILocationProvider派生的标记