流式数据下载
1. 功能介绍
流式数据下载功能用于提升 Telenav Navigation SDK 的地图数据实时性与在线数据更新能力。 传统离线地图模式通常依赖预安装的完整地图包,虽然能够提供稳定的离线导航能力,但在地图更新频率、数据时效性以及存储空间占用方面存在一定限制。
为了解决上述问题,SDK 提供了流式数据下载能力。 该功能允许 SDK 在运行过程中根据用户当前位置、导航路径以及周边区域,动态从服务端获取最新地图数据,并自动缓存到本地存储中。
当设备处于在线状态时,SDK 会持续获取最新数据,包括地图变化、道路属性更新、交通信息以及相关导航数据,从而保证导航结果与地图显示的实时性。 当设备进入离线状态后,SDK 仍可继续使用已经缓存的数据进行导航,保证用户在弱网或无网环境下的基本导航体验。
此外,流式数据下载功能支持自动数据更新机制。 当服务端的数据版本发生变化后,Local Engine 会在应用下一次启动时自动检测并下载最新数据,无需用户手动更新完整地图包,从而有效降低地图维护成本。
根据不同项目需求,SDK 支持以下三种地图数据工作模式:
- 预装数据模式
- 纯流式地图模式
- 混合模式(流式地图 + 预装数据)
开发者可以根据网络环境、存储限制以及业务需求选择合适的数据方案。
流式数据下载功能主要包含以下能力:
- 运行时动态下载最新地图数据
- 自动缓存用户周边区域数据
- 离线状态下继续使用已缓存数据
- 服务端数据更新后自动更新
- 降低完整离线地图包的存储占用
- 提升地图与道路信息时效性
流式数据通常包括:
- 地图数据
- 道路属性
- 路口信息
- POI 数据
2. 工作机制
在线场景
当设备网络可用时:
- SDK 根据当前位置或导航路径请求数据
- Telenav Server 返回最新地图数据
- SDK 将数据保存至本地缓存
- 导航引擎实时使用最新数据
离线场景
当设备网络不可用时:
- SDK 使用本地缓存数据
- 用户仍可继续导航
- 已缓存区域可正常访问
数据更新机制
当服务端地图数据更新后:
- SDK 在下次启动时检查版本
- 自动下载更新数据
- 替换本地旧缓存
- 保持数据最新状态
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(...) 等流式数据下载相关配置。