# A lightweight tile map using threejs : three-tile

**URL:** <https://discourse.threejs.org/t/a-lightweight-tile-map-using-threejs-three-tile/85383>\
**Category:** Showcase\
**Tags:** map, tile, cesium, gis, terrain\
**Created:** [July 22, 2025, 12:04pm UTC](https://discourse.threejs.org/t/a-lightweight-tile-map-using-threejs-three-tile/85383 "2025-07-22T12:04:14Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sxguojf](https://avatars.discourse-cdn.com/v4/letter/s/9de053/32.png) [@sxguojf](https://discourse.threejs.org/u/sxguojf)\
**Post date:** [July 22, 2025, 12:04pm UTC](https://discourse.threejs.org/t/a-lightweight-tile-map-using-threejs-three-tile/85383/1 "2025-07-22T12:04:14Z")

</div>

**three-tile** is a lightweight 3D tile map library developed based on **threejs**. It offers advantages such as ease of use and low resource consumption, and provides a lightweight 3D terrain model suitable for adding 3D maps to applications developed with threejs.

[https://github.com/sxguojf/three-tile](https://github.com/sxguojf/three-tile)

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/threejs/original/3X/9/c/9cd744e7c5d20eb61655a9b3e1dda819ed21d8df.jpeg)

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/threejs/original/3X/7/9/795ec61003e5cc2c0b80876451e3b1cbe9141310.jpeg)

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/threejs/original/3X/4/8/4854d6262d45d5ec15bbb8c3c8af39dec22555f6.jpeg)

---

<div class="post-metadata">

**Author:** ![kpachinger](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/kpachinger/32/4616_2.png) [@kpachinger](https://discourse.threejs.org/u/kpachinger)\
**Post date:** [July 22, 2025, 2:56pm UTC](https://discourse.threejs.org/t/a-lightweight-tile-map-using-threejs-three-tile/85383/2 "2025-07-22T14:56:01Z")

</div>

**I love it shown** relation to Earth OP!

Re: batched zoom  
The `tile array` sorts all zoom levels… `n * x` complexity! Perhaps an `_internalCache` should debounce output? This should be default without user specification. For example, if **elevation** changes from 7110 to 0, avoid 711 progressive LODs (assuming magnification is 10:1).

Cheers,  
Sven “LLVM” Gestation

---

<div class="post-metadata">

**Author:** ![sxguojf](https://avatars.discourse-cdn.com/v4/letter/s/9de053/32.png) [@sxguojf](https://discourse.threejs.org/u/sxguojf)\
**Post date:** [July 23, 2025, 1:26am UTC](https://discourse.threejs.org/t/a-lightweight-tile-map-using-threejs-three-tile/85383/3 "2025-07-23T01:26:55Z")

</div>

Yes, LOD is called at every zoom level, its efficiency is somewhat low. However, if delay LOD and final tile loading until after zooming or panning has fully completed, the tile display logic becomes difficult to manage properly—blank areas will appear during loading, resulting in a subpar user experience.

---

<div class="post-metadata">

**Author:** ![Singhi\_John](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/singhi_john/32/56857_2.png) [@Singhi\_John](https://discourse.threejs.org/u/Singhi_John)\
**Post date:** [July 25, 2025, 1:42pm UTC](https://discourse.threejs.org/t/a-lightweight-tile-map-using-threejs-three-tile/85383/4 "2025-07-25T13:42:36Z")

</div>

Could you share the core idea to make it real? Just several words.

---

<div class="post-metadata">

**Author:** ![sxguojf](https://avatars.discourse-cdn.com/v4/letter/s/9de053/32.png) [@sxguojf](https://discourse.threejs.org/u/sxguojf)\
**Post date:** [July 25, 2025, 2:14pm UTC](https://discourse.threejs.org/t/a-lightweight-tile-map-using-threejs-three-tile/85383/5 "2025-07-25T14:14:49Z")

</div>

Here are some documents: [three-tile (sxguojf.github.io)](https://sxguojf.github.io/three-tile-doc/2.base/01.index.html#_3-three-tile)
