Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions src/content/roadmap/maplibre-native/action-journal/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
title: Action Journal
heroImage: "./action-journal.png"
project: maplibre-native
status: released
released: "April 2025"
---

The Action Journal provides persistent logging of top-level map events to aid in debugging and observability.

## Documentation

### iOS

- [Action Journal Example](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/actionjournalexample/)

### Android

Comment on lines +13 to +18
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### iOS
- [Action Journal Example](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/actionjournalexample/)
### Android
- [Action Journal Example](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/actionjournalexample/)

- [Action Journal Example](https://maplibre.org/maplibre-native/android/examples/observability/action-journal/)

## Implementation

The Action Journal feature was implemented in [#3409](https://github.com/maplibre/maplibre-native/pull/3409) by Adrian Cojocaru.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Dynamic Texture Atlas
heroImage: "./dynamic-texture-atlas.png"
project: maplibre-native
status: released
released: "May 2025"
---

Instead of storing glyphs and icons per tile, store them in a dynamic texture atlas shared between all tiles. This allows for lower memory usage.

This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198).
Comment on lines +9 to +11
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Instead of storing glyphs and icons per tile, store them in a dynamic texture atlas shared between all tiles. This allows for lower memory usage.
This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198).
Instead of storing glyphs and icons per tile, we now store them in a dynamic texture atlas shared between all tiles.
This allows for on average 4,5x lower memory usage in our benchmarks.
This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198) by Alex Cristici.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The memory usage is not the total memory usage but for the glyphs. I think it is a bit misleading that way.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair, thanks

How about:

Suggested change
Instead of storing glyphs and icons per tile, store them in a dynamic texture atlas shared between all tiles. This allows for lower memory usage.
This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198).
Instead of storing glyphs and icons per tile, we now store them in a dynamic texture atlas shared between all tiles.
This allows for significantly lower memory usage for glyphs and icons.
This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198) by Alex Cristici.

11 changes: 11 additions & 0 deletions src/content/roadmap/maplibre-native/lod/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: LOD Controls
heroImage: "./lod.png"
project: maplibre-native
status: released
released: June 2025
---

Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away. This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.

Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958).
Comment on lines +9 to +11
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

again a bit more fluff

Suggested change
Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away. This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.
Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958).
Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away.
This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.
Developers can now dynamically adjust the zoom level of tiles based on runtime conditions, such as drops in FPS or camera tilt during active navigation.
For example, tiles farther from the camera can automatically use lower zoom levels when the screen is tilted, ensuring smooth performance on large display infotainment devices without compromising the user experience.
Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958) by [@alasram](https://github.com/alasram).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why 'automatically'? You need to manually control it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean if I control it, it is automatic.
I can see how it is misleading.

Suggested change
Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away. This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.
Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958).
Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away.
This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.
Developers can now dynamically adjust the zoom level of tiles based on runtime conditions, such as drops in FPS or camera tilt during active navigation.
For example, tiles farther from the camera can use lower zoom levels when the screen is tilted, ensuring smooth performance on large display infotainment devices without compromising the user experience.
Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958) by [@alasram](https://github.com/alasram).

Binary file added src/content/roadmap/maplibre-native/lod/lod.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions src/content/roadmap/maplibre-native/long-running-test/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: Long Running Test
heroImage: "./desert-bus.png"
project: maplibre-native
status: released
released: August 2025
---

Some of our users run MapLibre Native for many hours, sometimes days on end. To ensure stability, we wanted to develop a long running test. We are distributing this test so that everyone can run it with hardware they have laying around.

Implementation Android in [#3512](https://github.com/maplibre/maplibre-native/pull/3512). See the [latest releases](https://github.com/maplibre/maplibre-native/releases?q=android-testapp&expanded=true) on GitHub.

A similar test for iOS will be available [soon](https://github.com/maplibre/maplibre-native/pull/3592).

---

After a vote by the developers, this ‘long running test’ is was officially called Desert Bus, named after a game from the 90’s where you had to drive a bus from Arizona to Nevada (an exciting 8 hour playthrough can be found on [YouTube](https://www.youtube.com/watch?v=2LtiHla1dNg)).
Comment on lines +9 to +17
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Some of our users run MapLibre Native for many hours, sometimes days on end. To ensure stability, we wanted to develop a long running test. We are distributing this test so that everyone can run it with hardware they have laying around.
Implementation Android in [#3512](https://github.com/maplibre/maplibre-native/pull/3512). See the [latest releases](https://github.com/maplibre/maplibre-native/releases?q=android-testapp&expanded=true) on GitHub.
A similar test for iOS will be available [soon](https://github.com/maplibre/maplibre-native/pull/3592).
---
After a vote by the developers, this ‘long running test’ is was officially called Desert Bus, named after a game from the 90’s where you had to drive a bus from Arizona to Nevada (an exciting 8 hour playthrough can be found on [YouTube](https://www.youtube.com/watch?v=2LtiHla1dNg)).
Some of our users run MapLibre Native for many hours, sometimes days on end.
To ensure stability, we developed a long running test.
We are distributing this test so that everyone can run it with hardware they have laying around.
After a vote by the developers, this ‘long running test’ is was officially called Desert Bus, named after a game from the 90’s where you had to drive a bus from Arizona to Nevada (an exciting 8 hour playthrough can be found on [YouTube](https://www.youtube.com/watch?v=2LtiHla1dNg)).
Please head over to [our testapp releases on GitHub](https://github.com/maplibre/maplibre-native/releases?q=android-testapp&expanded=true) to help us gain test data.
Implementation Android in [#3512](https://github.com/maplibre/maplibre-native/pull/3512) by Adrian Cojocaru.
A similar test for iOS will be available [soon](https://github.com/maplibre/maplibre-native/pull/3592).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I put the desert bus comment at the bottom because it is less important.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it really less important than when it was implemented by whom?

I'd argue that this is much more interesting marketing wise

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions src/content/roadmap/maplibre-native/mlt-integration/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: MLT Integration
heroImage: "./image.png"
project: maplibre-native
status: in-progress
---

Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

more fluff

Suggested change
Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
MLT is a next-generation tile format and a successor to MVT.
Our early benchmarks show 2-6x smaller tiles and some decoding benefits.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mentioning benchmarks without a link, reproduction or specifics is not useful IMO. I think we should keep this information in the repo where we can keep it up to date.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
MLT is a next-generation tile format and a successor to MVT.


As of October 2025, MLT integration is in an advanced stage. See [#3246](https://github.com/maplibre/maplibre-native/pull/3246) for the current status.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions src/content/roadmap/maplibre-native/plugin-api/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: Plugin API
heroImage: "./image.jpg"
project: maplibre-native
status: in-progress
---

We are experimenting with various ways to add plugins for extending MapLibre Native.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
We are experimenting with various ways to add plugins for extending MapLibre Native.
We are currently experimenting with various ways to add plugins for extending MapLibre Native.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As of October 2025, we are

Maybe


[Plugin Layers](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/pluginlayers) allow custom rendering to intergrate with custom style layers (as of October 2025, only available for iOS).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
[Plugin Layers](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/pluginlayers) allow custom rendering to intergrate with custom style layers (as of October 2025, only available for iOS).
[Plugin Layers](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/pluginlayers) allow custom rendering to intergrate with custom style layers.
As of October 2025 they are available for iOS.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you put it on a separate line it is not clear what it belongs to. Maybe sections:

Plugin Layers

Plugin Layers allow custom rendering to intergrate with custom style layers.

As of October 2025, available for iOS.

Other Plugin APIs

See #3703 for other suggested plugin APIs.

Cross-Platform Plugins

Meta developed a cross-platform plugin API that allows extending MapLibre Native with plugins written in C++. They have pledged to upstream this work.


See [#3703](https://github.com/maplibre/maplibre-native/pull/3703) for other suggested plugin APIs.

Meta developed a cross-platform plugin API that allows extending MapLibre Native with plugins written in C++. They have pledged to upstream this work.