p-lr / trekme Goto Github PK
View Code? Open in Web Editor NEWOffline maps Android application, for trekking, biking, etc.
License: GNU General Public License v3.0
Offline maps Android application, for trekking, biking, etc.
License: GNU General Public License v3.0
If there are no maps, display a message indicating that "You have not yet created a map".
And also add a button to directly navigate to the map creation fragment.
Import a map => messages aren't properly displayed.
Change this fragment to a list-style with single selection and an action menu, instead of repeating the available action in each card.
The download of a sample map is only available if no maps are detected.
It should also be available from the MapListFragment at any time.
Also, when the sample map is downloaded, it should be automatically imported and appear in the map list.
As described here in the comments, a ViewModel
should implement CoroutineScope
to have a coroutine running even while the device is rotating.
Typically, the RecordingFragment
could benefit from this, to process all recordings in a more efficient way.
Put this map in a zip file and make it available to download & import, maybe directly from inside the app.
Suggest to the user to download this sample map at startup, if no map is detected on the device.
Depending on the tool used to compress a map, the unzip task may fail.
For example, if the compression is done with the Asus file manager, there is no issue. But it fails when using the OnePlus file manager.
Add an "Archive" button, that creates a zip file in trekadvisor/archives. The zip file is appended with the date, using the same pattern or the unzip task.
In the MapListFragment
and in the ImportFragment
, remove the floating menu that only displays a "Settings" box on click.
This feature will require the revamp of the way location is retrieved.
The goal is to control a service which can record position and generate gpx files. It uses an independant google location service callback. The communication between the service and activity/fragment is done using GreenRobot's EventBus.
Using a background thread to listen to location events has proven ineffective.
Add a section explaining how to import gpx tracks.
Add the distance indicator to the feature list.
There is already an Android notification, but this way the user is absolutely sure something started.
Design principles
When the list of tracks is loaded in the record fragment, track statistics are loaded from the gpx track files (which a stored in custom section of the gpx structure).
If there are no such information, don't display this information as summary below each track name. Instead, add a way to calculate statistics.
Track that already have this information are eligible to be viewed in more detail inside the TrackViewFragment.
For a track being recorded, statistics are computed in real time. The TrackViewFragment subscribes to track statistic events emitted by the location service. When a recording stops, those statistics a serialized inside the gpx file.
The TrackViewFragment only requires the track statistics as launching argument (for instance), to follow the principle of least computations ahead of time. If the track points are needed to e.g plot a graph, then a second launching argument could be the track file (so a full parse of the track would give the points).
Implications
The GPXWriter and GPXParser must be adpated to serialize/deserialize track statistics.
The GPXParser provides a new public parsing method, that only parses statistics.
After a map is imported, make a snackbar appear to suggest the user to view the new map.
For app favorites, or any other data that should be persisted.
From developer.android.com:
Switching between coarse and fine-grained location updates. Use lifecycle-aware components to enable fine-grained location updates while your location app is visible and switch to coarse-grained updates when the app is in the background. LiveData, a lifecycle-aware component, allows your app to automatically update the UI when your user changes locations.
Also the default level might be 16 instead of 17.
The markers outside of the TileView don't get touch events.
Hi
I would like to report a bug.
If i select a map (eg. world map) and then go to gpx recording and import a recorded gpx file which was recorded using the trekadvisor app and then go back to the world map, the maps does not show the gpx recorded file. The only way i can get the recorded gpx file to show up is to select a different map and then go back to the world map. So the map is not refreshing after gpx file is imported from the gpx recorder. The other option is to close and reopen the app to get the map to refresh with the newly recorded gpx file.
Applications like Google Photos look into trekadvisor folder and add all the tiles to albums and photo content.
During calibration, if someone inputs projected values instead of geographical coordinates or vice versa, there is no warning about the mistake.
Upon calibration point saving, a Snackbar
indicating the confusion should suggest to enter correct values.
Refactor so this view is no longer statically added to the TileViewExtended
, but rather only when it's needed.
When I open the app Im get crashing. How to fix this?
When they are incorrect, a warning is already shown inside the credentials fragment.
Add the same warning inside the WmtsFragment, to avoid a blank screen.
Maybe also add a link to the relevant troubleshoot section.
For instance the gpx import feature only support the import of list of tracks.
But as of http://www.topografix.com/GPX/1/1/#type_gpxType a gpx file can also routes (which can also contain waypoints).
The import feature should not try to generate a map.json when it already exists in the imported archive.
Upon orientation change, the mBackFragmentTag
should be saved and restored, so the onBackPressed()
method behaves properly.
An exception is sometimes thrown during the import phase after an ign map download.
Refactor to "ui", and create a "fragments" sub-package.
The drawing in RouteLayer
only uses the projected coordinates of the route's markers.
It should take into account map with no projections, like in MarkerLayout
.
Test with a map without a projection.
Change this fragment to a list-style with single selection and an action menu, instead of repeating the available action in each card.
Use FragmentManager.putFragement
, like explained here :
Hi
I have compiled the trekadvisor and the only think that i can get to work is the GPX Record. Then i try to click on the GPS REcord the APP closes. What am I doing wrong
In TrackImporter.GpxTrackFileTask
, method gpxTracktoRoute
, there is a flaw in marker creation.
The logic used for marker is different and this one should be used : only define "projected" or "relative" values if the map uses a projection. This way is less ambiguous.
Also, track saving is tied to map configuration saving. Like the changes make for markers, a specific file named e.g "tracks.json" or "routes.json" should be used to persist routes.
So a dedicated task of the MapLoader
, named e.g. MapRouteImportTask
, should create the RouteGson
object from the "route.json" file.
When you import a map from the "Import a maps" section the "My Maps" list does not refresh. Only when you close the app and then reopen it will the "MY Maps" list refresh.
When a map isn't calibrated, going through the calibration process until the end (projection, then defining calibration points), the calibration status isn't updated in the map list.
The center to position feature should not only center to the current position, but also zoom in if this is required to center the view to the current position.
The progression is shown under android 6.
On Android 8, only the SnackBar indicates that the map is saved.
When importing a new map without any image provided, the layout in the map list is weird.
Show a default image.
Consider using opaque color instead of transparent pixels.
Profile using Debug GPU Overdraw tool. See doc.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.