- 类型: [工具]
概述
这个工具是一个在Unity中基于天地图API,实现所定区域范围地图瓦片的自动下载和存储
设计初衷
- 解决了什么问题: 在GIS、智慧城市、模拟仿真等项目中,常常需要大范围、高精度的真实世界地图作为底图。手动下载成千上万张瓦片地图不仅效率低下,而且难以管理。此模块旨在自动化这一过程。
- 设计目标: 提供一个高效、可复用的开发工具,只需简单配置经纬度范围和缩放层级,即可快速生成一套可离线使用的本地地图瓦片缓存
核心特性
- 瓦片自动下载: 根据设定的经纬度范围和缩放级别(3-18级),自动计算瓦片矩阵,并请求天地图API下载对应的瓦片图片。
- 本地缓存机制: 首次下载的瓦片图片会以PNG格式保存到本地指定路径,后续可直接从本地加载,实现离线运行并节省网络资源。
- 异步高性能下载: 采用
UniTask和UnityWebRequest异步下载图片,下载过程完全不阻塞Unity主线程,保证了编辑期和运行时的流畅体验 - 高质量纹理保障: 脚本启动时会自动设置高质量的纹理参数(各向异性过滤、Mipmap等),避免地图贴图在打包后因压缩而变得模糊。
- 精准定位与范围选择: 自由输入地图中心的经纬度,并设定需要下载的精确范围
- 多级LOD按需加载: 支持自定义下载一个或多个地图缩放层级,从宏观概览到微观细节,实现按需加载。
- 天地图API深度集成: 提供专属字段预设API Token,并能一键切换地图类型(影像、地形等)与注记样式,满足多样化的需求下载。
- 资源管理自由化: 可以根据项目需求,自由定义下载瓦片的分辨率大小和本地存储路径
依赖与源代码
依赖项
-
Unity版本:
2021.3.x或更高 -
外部库:
UniTask (Cysharp.Threading.Tasks): 用于异步编程。
源代码
- 在您的项目
Scripts文件夹中,创建TianMapDownloading脚本。- 创建
TianMapDownloading.cs脚本** (随便挂载到场景中物体上)
- 创建
public class TianMapDownloading : MonoBehaviour
{
public enum MapLayerType
{
[InspectorName("矢量地图")]
[Tooltip("vec_c: 标准矢量地图")]
Vector = 0,
[InspectorName("卫星影像")]
[Tooltip("img_c: 卫星影像地图")]
Satellite = 1,
[InspectorName("地形晕渲")]
[Tooltip("ter_c: 地形晕渲地图")]
Terrain = 2
}
public enum Anno

最低0.47元/天 解锁文章
9735

被折叠的 条评论
为什么被折叠?



