Skip to content

EH数据服务

功能介绍

EHDataService 以结构化模型输出电子地平线信息,核心包含:

  • 路径信息:EHPath(MPP、sub path、intersection、traffic 等)
  • 位置信息:EHPosition(候选位置、置信度、当前 link 等)

接口定义见 com.telenav.sdk.ehservice.api.EHDataService

核心接口

接口 说明
EHService.Factory.createEHDataService(options) 创建数据服务实例
addEHDataListener(listener) 注册监听
removeEHDataListener(listener) 解绑监听
dispose() 释放服务

回调说明

EHDataListener 推荐优先使用以下两个回调:

1
2
3
4
interface EHDataListener {
    fun onPathUpdated(path: EHPath) {}
    fun onPositionUpdated(positions: List<EHPosition>) {}
}

onPathUpdated(path: EHPath)

常见消费字段:

字段 说明
path.pathId 路径 ID,-1 通常表示无效
path.length 路径长度(米)
path.links 路径上 link 列表
path.intersections 路口信息(需启用检测距离)
path.subPaths 分支路径(受 sub-path 配置影响)
path.traffic 交通流/事件(需启用 traffic)

onPositionUpdated(positions: List<EHPosition>)

  • 位置按置信度降序输出,positions[0] 通常为最可能位置。
  • EHPosition.link 可能为 null(例如离路或暂不可匹配)。

常见字段:

字段 说明
timestamp / elapsedTime 时间戳与开机后时长
coordinate 匹配后坐标
rawBearing / bearing 匹配前后航向
pathId / offset 所在路径及偏移(米)
probability / confidence 概率与置信度

示例代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
val ehDataService = EHService.Factory.createEHDataService(
    EHServiceOption.Builder()
        .setMainPathLength(4000)
        .setSubPathLevel(1)
        .setIntersectionDetectDistance(1000)
        .enableTraffic(true)
        .build()
)

val listener = object : EHDataListener {
    override fun onPathUpdated(path: EHPath) {
        // 刷新 MPP、路口与沿路结构化信息
    }

    override fun onPositionUpdated(positions: List<EHPosition>) {
        val mpp = positions.firstOrNull() ?: return
        // 使用 mpp.coordinate / mpp.link 做策略与渲染
    }
}

ehDataService.addEHDataListener(listener)

兼容回调说明(Deprecated)

onDataUpdated(dataList: List<EHData>) 已被标记为 deprecated。
当前版本仍可能回调该接口用于兼容旧逻辑,但新代码建议迁移到 onPathUpdated + onPositionUpdated

注意事项

  • setIntersectionDetectDistance(0) 表示关闭路口检测。
  • enableTraffic(true) 后,交通信息通过 EHPath.traffic 输出。
  • 服务 dispose() 后需要重新创建实例,不能继续添加监听。