Offline maps on Meshtastic

Regarding the offline use of Meshtastic, there could be support for offline maps. The map engine should be smooth, and support both raster and vector maps.

For example, c:geo is a open source project, which I found today by recommendation, and the map engine supports both raster and vector maps (and plenty of other features). I did test the engine, and it does run smoothly, even with a 4Gb .map Mapsforge vector map. Sharing offline map files, to save space, with other mapping applications can be done: https://www.cgeo.org/faq.html#osm-howto

This might be “easily” merged, as always…

6 Likes

I think this is a great idea. But until 1.0 the only thing I can sign up for is the current current maps. I used mapbox because it is super well documented and free for up to 15Kish map views per month.

If someone wants to add offline maps it looks like only a few added function calls. It would probably be a fairly good ‘intro to android programming’ task for anyone who is interested:

adding as an issue here:

2 Likes

but if someone wants to switch us to cgeo, I’m also fine with that - but they’d need to send in a PR. I don’t think I can sign up for that.

I would be interested but you have to code an selection screen where the user can select the current country or region. I am not very into Kotlin

1 Like

I have issues even getting the project on android studio(beta): when I want to build it doesn’t detect the config I guess
Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Could not resolve project :geeksville-androidlib.

ooh great that you are trying to build it - sorry for not making a better README yet for that project.

The project uses git submodules for a few dependencies.
This should fix it for you:

git submodule update --init --recursive

You will also need to create a few stub config files by copying them from their templates. Here’s how the github continuous integration does it:

        rm ./app/google-services.json
        cp ./app/google-services-example.json ./app/google-services.json
        rm ./app/src/main/res/values/mapbox-token.xml
        cp ./app/special/mapbox-token.xml ./app/src/main/res/values/
        rm ./app/src/main/res/values/curfirmwareversion.xml
        cp ./app/special/curfirmwareversion.xml ./app/src/main/res/values/

actually - I decided to just add this to the README

now it works (Manjaro) but why cant I run the android yml? And on the self compiled map I get an error:

E/Mbgl: {geeksville.mesh}[Setup]: loading style failed: HTTP status code 401

and 

W/FirebaseInstanceId: Token retrieval failed: SERVICE_NOT_AVAILABLE. Will retry token retrieval

This also could be because i have no play services installed

I don’t quite understand “why cant I run the android yml?” - can you elaborate?

Btw for your cool new maps possibly best to make them a peer of the other screens (fragments), then we could allow either or both (for testing) of the maps to be in the users app.

ah in the android.yml there are also the dependencie commands thought you can run theese

@Konradrundfunk Development on offline maps sounds fantastic! c:geo would also support geocaching out of the box. Might be pleasant news for all geocache enthusiasts.

I am not very fimillular with kotlin maybe we could team up I am also quiet into geocashing

Hi just for info re hiking with offline maps. I would use openandromaps.org to download maps and use them on cartograph. Usually I do this on my iphone but cartograph do have an Android equivalent although I have not tested it.
Openandromaps offer mapsforge maps which are great for hiking. You also get POIs.
Cartograph allows you to record your track.
I have no idea how you could code the Meshtastic app to allow you to have a selection of offline providers unfortunately. So I cannot help much!

1 Like

the mapbox API has support for automatically downloading and using offline maps that cover wherever you are. Alas, we just don’t call that API yet :wink:

Hey guys, have a look into API for Locus Maps. They were helpful when I tried to design a prototype of LORA based tracker integrated with their maps and API. They offer free version and of course the paid one (for approx. 10USD per phone installation). They have great offline maps and huge community.

2 Likes

thanks for the pointer!

Hi guys,
thanks @slavino for notification on this topic. As Locus Map dev, I’ll just give you a quick info here.
From my quick reading, seems you are looking for replacement for offline MapView system. Not sure why you want to replace MapBox system, but from the free alternatives, this is currently most easy to achive with MapsForge library (that Locus Map use as well). Anyway there is still some work with map distribution etc.

Locus Map and it’s API are not! replacement for the map view. App only offers API for displaying and work with app data on the map. Locus Map is mainly about maps, so if you want and easy and quick solution how to get maps to more people, you may give it a try. It is possible to simply create a service on your side, that will every second send new list of points to the Locus Map (if is running) so users may see content on many of available maps etc etc.

I’m not advertising Locus Map here, maybe opposite: warn you in case, you are really searching only for replacement of the MapView system.

If there will be any questions, feel free to ask, I’ll gladly help ;).

PS: btw nice example how this works is LiveMap offered by add-on Geocaching4Locus (geocaches downloaded from internet and refreshed on the map when user moves with the map).

2 Likes

Ehm, sure but your ecosystem delivers also possibility to see all that map information even on smartwatch (for me it works on your free app on Samsung’s Gear S2 and latest Samsung Watch as well).

Other than that - the map layer is fantastic and is available offline. I don’t even count the situations when I am out of GSM coverage and any hint about terrain, forest roads, etc. were urgently needed :slight_smile: You did a fantastic job with this app - Thank you!

The only downside is missing iOS port of Locus - but that’s another story as I don’t care much about Apple.

1 Like