Skip to content

流式数据下载

1. 功能介绍

流式数据下载功能用于提升 Telenav Navigation SDK 的地图数据实时性与在线数据更新能力。 传统离线地图模式通常依赖预安装的完整地图包,虽然能够提供稳定的离线导航能力,但在地图更新频率、数据时效性以及存储空间占用方面存在一定限制。

为了解决上述问题,SDK 提供了流式数据下载能力。 该功能允许 SDK 在运行过程中根据用户当前位置、导航路径以及周边区域,动态从服务端获取最新地图数据,并自动缓存到本地存储中。

当设备处于在线状态时,SDK 会持续获取最新数据,包括地图变化、道路属性更新、交通信息以及相关导航数据,从而保证导航结果与地图显示的实时性。 当设备进入离线状态后,SDK 仍可继续使用已经缓存的数据进行导航,保证用户在弱网或无网环境下的基本导航体验。

此外,流式数据下载功能支持自动数据更新机制。 当服务端的数据版本发生变化后,Local Engine 会在应用下一次启动时自动检测并下载最新数据,无需用户手动更新完整地图包,从而有效降低地图维护成本。

根据不同项目需求,SDK 支持以下三种地图数据工作模式:

  • 预装数据模式
  • 纯流式地图模式
  • 混合模式(流式地图 + 预装数据)

开发者可以根据网络环境、存储限制以及业务需求选择合适的数据方案。

流式数据下载功能主要包含以下能力:

  • 运行时动态下载最新地图数据
  • 自动缓存用户周边区域数据
  • 离线状态下继续使用已缓存数据
  • 服务端数据更新后自动更新
  • 降低完整离线地图包的存储占用
  • 提升地图与道路信息时效性

流式数据通常包括:

  • 地图数据
  • 道路属性
  • 路口信息
  • POI 数据

2. 工作机制

在线场景

当设备网络可用时:

  1. SDK 根据当前位置或导航路径请求数据
  2. Telenav Server 返回最新地图数据
  3. SDK 将数据保存至本地缓存
  4. 导航引擎实时使用最新数据

离线场景

当设备网络不可用时:

  1. SDK 使用本地缓存数据
  2. 用户仍可继续导航
  3. 已缓存区域可正常访问

数据更新机制

当服务端地图数据更新后:

  1. SDK 在下次启动时检查版本
  2. 自动下载更新数据
  3. 替换本地旧缓存
  4. 保持数据最新状态

3. 流式数据下载、预装数据模式、混合模式的区别

3.1 预装数据模式功能说明

预装数据模式是传统离线地图模式。

用户需要提前安装完整地图包,SDK 在运行过程中主要依赖本地数据,不依赖实时网络下载。

特点

  • 完全离线可用
  • 数据稳定
  • 不依赖网络
  • 占用本地存储较大
  • 数据更新周期较长

适用场景

  • 网络不稳定区域
  • 车机长期离线场景
  • 对稳定性要求较高的项目
  • 海外漫游场景

3.2 纯流式地图模式

功能说明

纯流式地图模式下,SDK 不依赖完整离线地图包,而是在运行时动态下载数据。

SDK 会自动缓存用户访问区域,并在后台持续更新。

特点

  • 数据实时性高
  • 地图更新及时
  • 降低本地存储占用
  • 依赖网络连接
  • 支持离线缓存

适用场景

  • 网络环境较好的地区
  • 对实时数据要求较高
  • 希望减少预装地图大小
  • 轻量化部署方案

3.3 混合模式(流式地图 + 预装数据)

功能说明

混合模式结合了流式地图与预装数据两种能力。

SDK 以本地预装数据为基础,同时通过流式地图能力获取最新增量数据。

特点

  • 同时支持离线与在线更新
  • 保留基础地图稳定性
  • 获取最新地图变化
  • 网络依赖较低
  • 用户体验最佳

3.4 三种模式对比

项目 预装数据模式 纯流式地图模式 混合模式(流式地图 + 预装数据)
是否依赖网络 部分依赖
离线能力
数据实时性
本地存储占用
数据更新方式 手动更新地图包 实时下载 预装数据 + 实时更新
地图完整性 完整 按需下载 完整
推荐场景 完全离线 在线场景 车载量产

示例代码

流式数据下载能力在 SDK 初始化阶段完成配置。开发者获取 Telenav 分配的授权信息和云端配置后,需要重点确认以下初始化参数:

  • SDKOptions.setApiKey(...):设置 Telenav 分配的 API Key
  • SDKOptions.setApiSecret(...):设置与 API Key 对应的 API Secret
  • SDKOptions.setCloudEndPoint(...):设置项目对应的 Telenav 云端地址。
  • SDKOptions.setRegion(...):设置项目使用的区域信息。
  • SDKOptions.setSdkCacheDataDir(...):设置 SDK 可写入的本地缓存目录。
  • NavSDKOptions.enableDownloadMapData(true):开启地图数据下载能力。
  • NavSDKOptions.setMapStreamingSpaceLimit(...):设置流式地图数据可使用的本地缓存空间上限。

完整初始化代码请参考应用启动初始化示例(后台线程),其中包含 setCloudEndPoint(...)enableDownloadMapData(true)setMapStreamingSpaceLimit(...) 等流式数据下载相关配置。