Hello, I’m looking for a good tool to selfhost some kind of location history similar to Google’s one. To have some data I can test the tools with, I merged every of my bicylce and hiking tours to one GPX file containing 7000km worth of travel. Then I tried this tool, but it really lags with so much data and every move and every zoom takes some seconds to load. Next I tried the “Phonetrack” app on my nextcloud instance, but this as well lags and I have to activate every track manually and they are color coded. I really like the connection between the phonetrack app on my Android and the nextcloud app, but I am afraid that I’ll eventually run into the same performance problem when I gathered enough data. I’ve seen that theres OwnTracks, but it seems you have to set up your own server and I don’t want to pay extra next to my nextcloud subscription. Do you know of any kind of location history tool I can use that can handle big amounts of data?
EDIT: I now found a solution I’m very happy with: I still use the Phonetrack app with my Nextcloud and komoot to track my biking/hiking tours. I found a python program that downloads all my komoot tours (https://github.com/ThePBone/KomootGPX) in a folder on my Linux Desktop. I also mounted my nextcloud to my Linux filesystem, so I’d have access to the Phonetrack exports. I wrote a Java program that takes all the gpx files and converts them to a JSON file similar to the original Google Location History JSon file. That all happens automatically once in a week with an anacronjob. Finally I use this tool (https://github.com/theopolisme/location-history-visualizer) to visualize all the data. I’ve not run into performance issues with this unlike with the other apps I tried. I plan to change this program so I don’t have to got through the steps with selecting the file, etc. but this is my current implementation that I’m very happy with. Just leave me a message if you need my Java file to achieve the same :)
Unfortunately there are no fantastic options. But it is a three part problem.
Server to collect, store and serve the location data.
App to send the data to the server
ui to visualise the data.
There are some larger collection servers, but nothing that provided the data back in a way that i wanted. I currently use a custom script some created, whic provides a number of API endpoints. I will rustle up the link.
There are a number of apps, I use phonetrack. Defaults to next cloud formants but is easily editable.
The UI is where a lot of this fall down. I have phone always recording location, so tracks is no good for me, I wanted to use something like a heat map. The script I talked about includes a simple heatmap using leaflet and openstreetmaps. This fits my ise case much better, but is still not ideal.
I ultimately want to pre process the data to reduce the size of the data set that gets sent to client, to reduce the lag time. Good luck though, as it is a fun and challenging problem!
(I’ll upload some screenshots when off mobile)
https://github.com/gue-ni/location_tracker
I agree, the first two problems are rather easy to solve with phonetrack or any other of the tracking apps like µlogger, Owntracks, Traccar, etc. and nextcloud or the backend you provided. What is the reason that the simple heatmap is not ideal? Does it also lag or are you looking for filters functionality, etc.? The data pre processing must be challenging cause thats the part really seperating the self hosted solutions to Google’s one. If one could pre process the data on a nextcloud server and could render it on a map without significant lags, that would be really cool. Maybe I’ll try to work on that in the future when I got more advanced in programming.
Yeah, i think my data set is around 14mb when i load it all (and it loads all points to the browser). that is a bit of a loading lag, but once loaded it is ok.
The other issues is when you zoom out, you cannot pan around. you have to do clever scrolling (zoom) in and out to get to where you want.
I think it should be reasonabley easy to do the server side updates, but i cannot javscript front end to save my life!
here is a JS one i tried to build
That looks nice. If you want to share it, I’d totally try it out!
it is just a server-less javascript implementation (ie, a single html file, plus pre-packaged data).
Ultimately, it used leaflet.js and each square is a square-icon with different opacity. but i think you will find that heatmap plugin to leaflet will provide better performance with less complexity.
Still, i can upload it if you want.