meshtastic / network-management-client

A Meshtastic desktop client, allowing simple, offline deployment and administration of an ad-hoc mesh communication network. Built in Rust and TypeScript.
GNU General Public License v3.0
171 stars 12 forks source link

Map tiles download via HTTP #370

Closed D4rk4 closed 1 year ago

D4rk4 commented 1 year ago

Please implement the functionality to change map tile sources to the HTTP protocol. This is essential because HTTP can be effectively cached by various proxy or WAN optimization software, such as Cisco WAAS. This becomes crucial when setting up an off-grid network with limited traffic uplink, as it enables map tiles to be downloaded only once for all devices.

ajmcquilkin commented 1 year ago

How would you want this to look? Would you be looking for something like an application config field that would allow for you to enter custom URLs for map tile sources?

D4rk4 commented 1 year ago

Thank you for your suggestion to add custom tile server URL configuration to the meshtastic-network-management-client.

Allowing users to provide a configuration string, similar to how it's implemented in LeafletJS, is indeed an excellent idea. For example, users could use the following format for configuring their preferred tile server:

https://{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}
http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
http://tilessputnik.ru/{z}/{x}/{y}.png
https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=blahblahblah
ajmcquilkin commented 1 year ago

From the digging I'm seeing, it's going to be significantly simpler to support custom map styles as a whole instead of overriding specific map styles. Here's the map style spec, would that hit your use case? In the future we could also make these files local.

As a side note there's a Deck.gl refactor in progress which would expose these map styles to the user.

ajmcquilkin commented 1 year ago

Pushed a quick PR that adds the option to switch map styles, let me know if that's what you're looking for. Note this won't persist at this point, see #374.