项目概述
tinyworldmap 是一个专为离线优先和低带宽网络应用设计的轻量级世界地图。它基于 Leaflet 构建,支持所有缩放级别,最完整版本压缩后仅 450 kB。其客户端渲染经过针对老旧低端手机的专门优化和测试,确保流畅无卡顿。地图默认显示 OpenStreetMap 中人口最多的 10,000 个城市(截至撰写时,涵盖人口约 48,000 以上的所有城镇)。
主要功能与使用方式
1. 作为基础地图
通过在页面头部引入特定脚本文件,并使用 new L.GridLayer.TinyWorld({maxZoom: 19}).addTo(map) 替代常规的瓦片图层,即可将 tinyworldmap 用作 Leaflet 的基础底图。
2. 作为离线回退地图
该项目提供 Service Worker 方案,用于实现地图的离线功能。当设备离线时,Service Worker 会拦截对 OpenStreetMap 瓦片服务器的请求,并使用 tinyworldmap 在本地生成替代瓦片,确保应用继续正常运行。配置时需修改 Service Worker 中的 IMPORTANT 部分,并按照要求注明 OpenStreetMap 和 tinyworldmap 的版权。
地图外观与定制
通过构造函数中的 render 选项,可以更改地图各图层(如国界、州界)的样式。项目提供了默认样式和高度定制化样式示例。此外,支持联系商业邮箱获取定制地图(如道路图、城市图、其他语言地图等)。
不同尺寸版本
完整版地图压缩后约 450 kB。为满足不同需求,提供多种精简版本:
- 无边界版本 (
tiny-world-cities-10000.js):去除国界、州界和海岸线,体积减小约 300 kB,且数据更精确。
- 无城市标签版本:包括
tiny-world-borders.js(无州界)和 tiny-world-nocities.js(有州界),城市标签数据约占 172 kB(压缩后)。
- 更少城市版本:对于包含城市的文件,还提供仅包含 4,000 或 2,000 个城市(分别对应人口大于 137,000 和 287,000)的版本,通过文件名中的数字(如
2000、4000)来区分。
许可与署名
tinyworldmap 数据采用 ODBL 许可证,使用时必须进行署名。在 Leaflet 地图的页脚中,应同时包含对 OpenStreetMap 和 tinyworldmap 的版权归属声明。