Giter Site home page Giter Site logo

m4rtink / modrana Goto Github PK

View Code? Open in Web Editor NEW
66.0 66.0 21.0 15.21 MB

ModRana is a flexible GPS navigation system for mobile devices. This is the main upstream modRana source code repository - waiting for your pull requests & patches! :)

Home Page: www.modrana.org

License: GNU General Public License v3.0

Python 85.39% QML 10.97% JavaScript 0.33% Shell 0.08% C++ 2.84% Makefile 0.32% QMake 0.07%

modrana's People

Contributors

brabijan avatar derdakon avatar eson57 avatar fferner avatar jperon avatar m4rtink avatar olf0 avatar r0kk3rz avatar rinigus avatar vpodzime avatar wikiwide avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

modrana's Issues

Backport atomic tread handling from Anaconda

There is a small window in thread handling that might cause a race condition triggering a traceback - thread can be joined even before it is started. This is already fixed in Anacondas ThreadManager and the fix should be backported.

Batch redownload

Batch download currently only downloads tiles that are not available, if a tile is not available, it won't download it. This is problematic if the users want's to just re-download a given area for example due to outdated tiles in the area.

There should be a switch in the batch download menu, that makes it download all tiles, even if some tiles are locally available (resulting in those tiles being replaced). Should be quite trivial.

Show download size estimate during batch tile download

Based on the combined size of already downloaded tiles we can easily compute the average tile size and use it to get an estimate for the total download size. It might be a bit inaccurate, but still better than nothing. :)

Sort search results by distance

Some search results should be sorted by distance, or at least have that option. At least local search results (once this is implemented) should be sorted by distance by default.

BTW, there are three main ways of sorting search results:

  • ordering as returned by the API/search algorithm (current default)
  • sorting by distance
  • alphabetic sort by name

Individual searches should have a good default way of sorting, which user needs to be able to easily override, preferably from the search page itself (pulley menu or equivalent ?).

Route info shows "address uknown"

The route info page for the current route shows that the start and destination addresses are unknown.

There should be the geocoded start and destination addresses or alternatively the geographic coordinates the entered address string, when Internet connectivity needed for geocoding is not available.

Maemo 5@N900: include bytecode in source packages

Currently the Python bytecote (which enables shorter startup times compared to running from py files each time), is created by a postinst script on-device.

If the bytecode is generated during packaging, the package should not be much larger and the on-device installation should be quicker.

Add an arrow pointing to coordinates

Ad an arrow that will point to a given set of coordinates.
Optionally the arrow could also point to a POI or search result.

(inspired by the SGTL application for Neo FreeRunner)

TTS pre and post hooks

In addition to the already supported custom TTS string, it would be nice to be also able to run some external code before and after TTS output is triggered.

A possible use case could be pausing and un-pausing background music.

Fix adress search

Looks like Google discontinued the address search API previously used by modRana and introduced a new one. So modRana needs to get support for this new API.

Provide tunables for the GTK GUI

The main aim is to research/prevent the annoying SGX crash bug on the N900. So Provide tunables that influence how (much) modRana works with the graphics. Using these tunables users might be able to find a configuration that prevents or on the other hand triggers the crash so that it can be researched.

Potential tunables:

  • logging trace length
  • periodic screen redraw time - not needed
    • manual map movement generates much more redraw events than periodic update,
      so the current once-per-second update is unlikely to influence the N900 crashes
    • also the most demanding automatic updates happen during fast movement and
      you want to have updates as often as possible in such a case (highway, airplane, speedboat, etc.)
  • don't redraw when tile is loaded - done
    • Options->Debug->Tiles->"Redraw screen once a new tile is loaded" (ON/OFF)
  • number of automatic download threads - done
    • Options->Network->Network usage->"Auto tile download thread count"
  • number of batch download threads - done
    • Options->Network->Network usage->"Batch tile download thread count"
  • tile cache size - done
    • Options->Debug->Tiles->"In memory tile cache size"
  • tile download queue size - done
    • Options->Debug->Tiles->"Auto tile download queue size"
  • sqlite commit interval - done
    • Options->Map->Tile storage->"Sqlite tile db commit interval"

Other things to check

  • check for OOM during modRana run

Navigation hooks

It would be handy to be able to hook external code to some events during navigation:

  • navigation started
  • navigation canceled
  • arrived in destination
  • manual rerouting triggered
  • automatic rerouting triggered
  • waypoint reached

Option to add custom tile servers

First I'd like to say that this is a great app. The only thing I'd like to do is add my own OSM tile server as a layer. Well, I say my own, but I really mean Cloudmade. They have tons of styles to choose from and it would be great to use them. I haven't played with all the features, but it would be nice to choose one map style for day and one for night if it can't do that already.

option not to store map layers or to expire tiles after some time

Some layers, such as the Google traffic layer change frequently and it mostly doesn't make sense to even store them and they should be regularly reloaded as often as possible.

This should be probably be setable from an option in map_config.conf + a global option that can be used to disable this. In the future per layer interactive configuration of this might be needed.

Add testing module

Add a module that runs various tests on modRana

Main area of focus should be testing of the various online services modRana uses (routing, POI search, geocoding, etc.), so that API changes or discontinuations could be spotted and fixed earlier.

Also some testing of map layers might be usable for similar reasons.
Basically just try to download a single tile and check if the result is an image.

Respect current unit format also in menu items

modRana already supports setting preferred unit format (km/miles) for displayed units but many menu items are still km only.

GTK

  • local search radius
  • batch download radius
  • turn by turn routing configuration

Qt 5 GUI

  • local search radius

Group bundled stuff

ModRana bundles quite a lot of third party Python modules, mainly for three reasons:

  • to be able to run from unpacked source tarball on most systems without excessive dependencies
  • to be able to run on old Python versions missing some modules introduced in later versions of Python
  • to be able to run on mobile platforms without package dependency support

Some Linux distributions, such as Fedora, don't like if applications bundle libraries if those libraries are available as packages in the repository. Therefore all stuff modRana bundles should be in a separate folder. Like this it can both be easily determined what modRana bundles and the folder can be removed for distros that don't like bundling (and modRana will in such case just get the deps from the repos).

Advanced coordinate parsing

modRana should support advanced geographic coordinate syntax, such as:

Bot input and display should be supported, such as:

N 49° 44.949 E 013° 22.407
33U E 382827 N 5512010

For display, there are two possibilities:

  • default coordinate display for coordinates
  • clickable coordinates - a popup would show other formats and enable operations with the coordinates

Version display broken on Sailfish

ModRana does not show information about version, both in GUI & in console when starting up. The textfile with information about current version correctly exists in /usr/share/harbour-modrana/version.txt, so this is probably either issue with the path to the file or a parsing issue.

SHR@Neo FreeRunner: start GPS on startup & improve GPS controll

correctly start GP on startup and also shut it down on shutdown

  • also add support for starting & shutting down GPS when modRana is running
  • also check if modRana correctly handles no fix at startup and only getting a fix after the typical long cold GPS startup-delay

also some bugs were reported

  • then using the ./run/neo startup script, modRana complains that GSD is not running
    • check if GPSD is running
    • check if it eventually acquires fix
    • check if modRana starts to report current position once it acquires fix
    • check if GPS is powered down once modRana exist when running in this mode

GTFS support

Feature request by jonwil:

I would like to request support for Google GTFS public transit data.
The specs are public and are available here
https://developers.google.com/transit/gtfs/
The support would ideally include: (in order of how important this is to me)

  1. Ability to feed in a GTFS data set from a URL or from a local disk file
  2. Display of stops (whatever stops the GTFS data set contains) on the map
  3. Ability to feed in a landmark or location or similar and have modrana figure out how to get from where I currently am (i.e. my current GPS coordinates) to the location specified using the next available public transport service (with the ability to identify that the only way to get there is to catch multiple vehicles and to provide details accordingly). It must also be able to handle walking (walking from where you are now to the nearest transit stop, walking from the final transit stop to the destination and walking between stops if necessary for changing vehicles) with the ability to set a limit on the maximum distance you are willing to walk (i.e. if you set this to a lower value it might then calculate a journey that will take longer in total but require less walking)
    Also, the route calculation should have the ability to use stop numbers (if the GTFS data provides them) as landmarks for the routing calculation.
  4. The ability to select a stop displayed on the map and see the next services scheduled to pass by that stop with their times
    and
  5. The ability to overlay a route on the map so you can see that exact route and where it goes (useful so you can see if a particular bus goes where you need to go and also so you if you are on a bus you can see where the bus you are on goes and identify when you need to get off)

CLI option for map config location

It should be possible to override the default map_config.conf file path with a custom path

  • could be good for testing
  • custom configs that are not automatically archived when the config gets updated

www.maps.lt/map/ ortofoto maps support

I don't know whether it is possible or not, but I tried to include in the ~/.modrana/map_config.conf

[[ltmap]]
  label=LTMap
  url="http://dc5.maps.lt/"
  type=jpg
  max_zoom=18
  min_zoom=0
  folder_prefix=LTMap
  coordinates=ltmap
  group=europe
  icon="mapnik"

and then changed file /opt/modrana/core/tiles.py

def getLTMap(lzxy):
    return '%s%d/%d/%d.%s' % (lzxy[0].url, lzxy[1], lzxy[2], lzxy[3], lzxy[0].type)

[....]

URL_FUNCTIONS = {
    'osm' : getOSMUrl,
    'web_mercator_substitution' : getWebMercatorSubstitutionUrl,
    'yahoo' : getYahooUrl,
    'google' : getGoogleUrl,
    'quadtree' : getQuadtreeUrl,
    'quadtree_substitution' : getQuadtreeSubstitutionUrl,
    'ltmap' : getLTMap,
}

and now I don't know what to do next... Maybe you can help me?

source

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.