Skip to content

WIP: feat: maplibre#3785

Closed
mdecourcy wants to merge 69 commits into
meshtastic:mainfrom
mdecourcy:poc/maplibre
Closed

WIP: feat: maplibre#3785
mdecourcy wants to merge 69 commits into
meshtastic:mainfrom
mdecourcy:poc/maplibre

Conversation

@mdecourcy

@mdecourcy mdecourcy commented Nov 22, 2025

Copy link
Copy Markdown
Contributor

MapLibre has near feature parity with Google Maps and actually has some advantages:

MapLibre Exclusive Features:

  1. Heatmap mode - Density visualization
  2. Role legend - Shows node role colors
  3. Offline tile caching - Ambient cache management
  4. Clustering toggle - Can be disabled
  5. Clustering actions - radial overlay of nodes for cluster of size <= 8
  6. Role-based filtering - Filter by device roles

Google Maps Exclusive Features

  1. Richer info windows - Full NodeChip display with details
  2. Track point info windows - Position details on track points

Things that I'm shelving for later (in no particular order):

  1. heatmap will need some touch up
  2. Reposition node type legend
  3. Consider moving location button above zoom in/out buttons
  4. Gut osmdroid
  5. Gut gmaps after successful fdroid userbase testing
  6. raster maps
  7. unsure if precision bits are working as intended. Doesn't smell right
  8. Node trackpoints enhancements to get parity w/ gmaps
  9. Lifecycle management improvements
  10. Better label hiding logic

Will address the missing features in separate PRs. This PR is already way too big, sorry guys

image image image image image image image image

mdecourcy and others added 30 commits November 14, 2025 08:49
…tastic#3704)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ic#3676)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: b8b8 <156552149+b8b8@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
…meshtastic#3712)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
meshtastic#3718)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…meshtastic#3720)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
…c#3721)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@b8b8

b8b8 commented Nov 30, 2025

Copy link
Copy Markdown
Collaborator

Cluster tap behavior is a bit unexpected:

* Google Maps version - at higher zoom levels, tapping a cluster will zoom to a bounding box containing the items in that cluster. Allowing the user to drill down. Only at the lowest zoom levels, and/or if nodes are broadcasting the same level of precision will a dialog/list of the nodes be shown.

* maplibre version - at all zoom levels, tapping a cluster will display a dialog/list/web of the nodes contained within

Due to the smaller location dots, it would be nice if clustering would stay off when selected as such and between page changes.

@b8b8

b8b8 commented Nov 30, 2025

Copy link
Copy Markdown
Collaborator

The introduction of an indication of role is a good idea and I'm open to exploring how to expose it, however for the sake of identifiable consistincy we should be coloring the pins as the nodeColor.

Also a bit conflicted about showing the nodeid as the identifier/label on the pin, in other places the node is identified by color and shortname (the node chip).

yes, short name would be better. I do like colour coded roles but it is inconsistent withe previous layout so makes sense to use the proper node derived colour.

@b8b8

b8b8 commented Nov 30, 2025

Copy link
Copy Markdown
Collaborator

Heatmap.. did not seem functional (or I do not have enough heat 🥶 )...

Heat map works for me but i personally dont think its needed. If it stays though, that's fine.

@mdecourcy

Copy link
Copy Markdown
Contributor Author

Is there a way to know/restrict the min zoomlevel for tilesets? I'd like to prevent this if we can. I was using the satellite Map Style in the below instance.
image

Yes there is, I can do this pretty easily. Will add to todo list.

Cluster tap behavior is a bit unexpected:

* Google Maps version - at higher zoom levels, tapping a cluster will zoom to a bounding box containing the items in that cluster. Allowing the user to drill down. Only at the lowest zoom levels, and/or if nodes are broadcasting the same level of precision will a dialog/list of the nodes be shown.

* maplibre version - at all zoom levels, tapping a cluster will display a dialog/list/web of the nodes contained within

Will do this as well

The introduction of an indication of role is a good idea and I'm open to exploring how to expose it, however for the sake of identifiable consistincy we should be coloring the pins as the nodeColor.

I agree that role colors diverge from present UI, however on a node map I do feel like the ability to differentiate role types at a quick glance is very useful. I could add a toggle to cycle between nodeColor and role colors?

Also a bit conflicted about showing the nodeid as the identifier/label on the pin, in other places the node is identified by color and shortname (the node chip).

As discussed in discord, this is only for emojis and is unfortunately a constraint of MapLibre. I have found a blog post with a potential solution that I can try to implement. If after a few iterations on this and potentially other solutions, I could fall back to node long name instead of hex ID. Would that suffice?

Regarding heatmap - very much a WIP that I can remove. It's definitely broken as it lies

@jamesarich jamesarich modified the milestones: 2.7.9, 2.8.0 Dec 5, 2025
@github-actions github-actions Bot added the Stale label Jan 4, 2026
@jamesarich jamesarich added enhancement New feature or request and removed Stale labels Jan 4, 2026
@DiabeticTurtle

Copy link
Copy Markdown

LOVE THIS!! I was looking for a fork of code that doesn't use any google services! Was looking into using OSM instead but maplibre looks great from the screenshots you've posted!

@jamesarich

jamesarich commented Jan 27, 2026

Copy link
Copy Markdown
Collaborator

LOVE THIS!! I was looking for a fork of code that doesn't use any google services! Was looking into using OSM instead but maplibre looks great from the screenshots you've posted!

There already exists the Fdroid flavor which contains OSM and no Play services/analytics etc. You can get it on fdroid, izzydroid, obtanium, the github release, etc.

This would be to replace the deprecated/archived osmdroid sdk as it will no longer be updated.

@DiabeticTurtle

Copy link
Copy Markdown

Oh lmao

@laundmo

laundmo commented Mar 21, 2026

Copy link
Copy Markdown

Heyo, theres a lot of issues this PR would resolve. Whats the state of this? Is it mostly ready to merge, only needing to be synced with the main branch, or are there must-have changes left which need to happen before its ready to merge?

@laundmo laundmo mentioned this pull request Mar 21, 2026
8 tasks
@jamesarich

Copy link
Copy Markdown
Collaborator

Heyo, theres a lot of issues this PR would resolve. Whats the state of this? Is it mostly ready to merge, only needing to be synced with the main branch, or are there must-have changes left which need to happen before its ready to merge?

Heyo, this is way out of date and would probably be better off re-written, the app architecture has shifted quite a bit. The current author seems to have moved on from the project, and this is lower on the priority list.

Feel free to pick it up and dust it off 👍

@jamesarich

Copy link
Copy Markdown
Collaborator

outdated, stale.

@jamesarich jamesarich closed this Mar 21, 2026
@laundmo

laundmo commented Mar 21, 2026

Copy link
Copy Markdown

Huh, allright.

In that case, could you please re-open every issue that was pre-emptively closed because it would be solved with this PR? A lot of issues with map display are now marked as solved/wontfix, and would need to be recreated to showcase the need for a new map renderer.

@jamesarich

Copy link
Copy Markdown
Collaborator

Huh, allright.

In that case, could you please re-open every issue that was pre-emptively closed because it would be solved with this PR? A lot of issues with map display are now marked as solved/wontfix, and would need to be recreated to showcase the need for a new map renderer.

nah we're good - this shows the history fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants