> For the complete documentation index, see [llms.txt](https://docs.ellipsis-drive.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ellipsis-drive.com/extra/troubleshooting/why-dont-all-geometries-show-on-every-zoom-level.md).

# Missing features at certain zoom levels

#### Why not all features are visible at every zoom level

In the Ellipsis Drive viewer, you may notice that not all features are displayed at every zoom level.

This is expected behavior and is related to how large vector datasets are rendered efficiently in the browser.

***

#### How feature rendering works

In 2D mode, the viewer uses Leaflet to render vector data. To ensure performance and prevent browser overload, features are progressively sampled based on dataset size:

* If a dataset contains fewer than 8.000 geometries, all features are loaded immediately
* If a dataset contains more than 8.000 geometries, the system loads a subset (approximately 4.000 features at a time) and continues loading additional features as you navigate the map

This approach ensures smooth interaction even with large datasets.

***

#### Why this limitation exists

Browsers have finite memory and rendering capacity.

Without these limits, large datasets could:

* significantly slow down map performance
* cause browser instability or crashes

**In 3D mode (using Three.js), these limits are significantly higher, especially to support use cases such as point cloud visualization.**

***

#### Controlling which features appear at each zoom level

You can define which geometries are prioritized at different zoom levels.

This allows you to structure visualisation logic, for example:

* show only large features when zoomed out
* progressively reveal smaller or more detailed features when zooming in

A common example is road networks:

* zoomed out: only highways are visible
* zoomed in: secondary and local roads appear progressively

***

{% hint style="success" %}

#### Result

This mechanism ensures:

* consistent performance
* scalable rendering of large datasets
* control over visual hierarchy without sacrificing usability
  {% endhint %}
