Menu

Main Menu
Talk Get Daily Search

Member's Online

    User Name
    Password

    [WIP] Merkator - Offline map application & engine

    Reply
    Page 1 of 2 | 1   2   | Next
    Custodian | # 1 | 2014-12-18, 12:21 | Report



    Hi there!

    As you may know, I announced Merkator project quite a while ago.

    Lots of stuff have been done since that time, and some more to be done before widly-beta can be released. But project reached the point, where some details can be revealed.

    Merkator is an offline map application. Offline means that you need internet connection only during download/update phase for your maps. And you dont need internet connection for browsing map data, search for POI/Address or finding a route.

    Screenshots:


    What is done:
    • Downloading/parsing/importing map data from different sources (new sources could be added easily). Geofabrik, Mapzen, Metro, any small-sized custom region.
    • Partial MapCSS-styles support for coloring schemes and POI aggregation
    • Map rendering with selected styles/POI
    • POI/Address search
    • Qt/QML Plugins for Tiled Engine & Geo Coding.

    What is planned:
    • Basic UI
    • Extended CartoCSS/MapCSS support
    • Local service for tile rendering on-demand for other applications which cannot use qt/qml plugins directly.
    • Route support
    • Qt/QML plugin for Routing.
    • Unexpected improvements

    As you know, there are awesome map projects already exists for jolla(Poor maps, ModRana and others), so my goal was to focus on internal stuff, which can be reused.

    All merkator internals are organized as libraries and qt/qml plugins(QGeoXXX stuff), which can be re-used. When region is downloaded and processed by Merkator, all data will be available for any application, so they also can be considered 'partially offline', atleast for tile data.

    For example Merkator map interface is simple:
    Code:
    Map {
      plugin: Plugin { 
        name: 'bmap'; 
        PluginParameter { 
          name: 'mapslot'; value: 'world' 
        } 
      }
    }
    This will not be turn-by-turn navigation program, but it could supply data for such program with routing plugin.

    I'm still considering license for the source code, but probably it will be released on GitHub.

    Stay tuned for first releases!

    IGG campaings are trending now, should I launch one to boost Merkator?

    Edit | Forward | Quote | Quick Reply | Thanks

    Last edited by Custodian; 2017-03-26 at 11:28. Reason: Dropbox link updated
    The Following 28 Users Say Thank You to Custodian For This Useful Post:
    ajalkane, Blacksphere, ck2nb, clovis86, coderus, dcaliste, DeadHorseRiding, eekkelund, foobar, HtheB, javispedro, Jordi, late88, MartinK, minimos, mrsellout, nieldk, nodevel, otsaloma, OVK, P@t, peterleinchen, rcolistete, shanttu, Wallace, Watchmaker, Wikiwide, zamorph

     
    nodevel | # 2 | 2014-12-18, 12:34 | Report

    Wow, this looks very promising! So the first map application with vector map support for SailfishOS is in the works (not counting Modrana plans, which I would like to see materialized as well)?
    At first, I thought it was Merkaartor - so no editing functionality planned?

    Originally Posted by Custodian View Post
    IGG campaings are trending now, should I launch one to boost Merkator?
    I'd say go for it

    EDIT: Yesterday Nemosyne (Mnemosyne port) appeared in the Store and today this - I can soon get rid of both Android apps I'm currently relying on.

    Edit | Forward | Quote | Quick Reply | Thanks

    Last edited by nodevel; 2014-12-18 at 12:41.
    The Following 2 Users Say Thank You to nodevel For This Useful Post:
    minimos, Wikiwide

     
    Custodian | # 3 | 2014-12-18, 12:41 | Report

    Originally Posted by nodevel View Post
    Wow, this looks amazing! So the first map application with vector map support for SailfishOS is in the works (not counting Modrana plans, which I would like to see materialized as well)?
    Map image is builded of tiles(xyz), which are generated with cartocss rules, i.e. 'default-standart' osm map, or only roads, or only cafe & bank POI but no others, etc. Tiles are raster(png) and precached for faster usage. But could be vector, not sure if this is really needed here.
    Originally Posted by nodevel View Post
    no editing functionality planned?
    Only browsing/searching functionality.

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following 4 Users Say Thank You to Custodian For This Useful Post:
    nodevel, OVK, Watchmaker, Wikiwide

     
    Watchmaker | # 4 | 2014-12-18, 12:55 | Report

    I'm not really sure about this, but aren't vector maps lighter (less space-consuming) than raster ones? Also, I always thought vector maps look better... just my 2 cents

    Anyway, I'm really happy you are on this, Basil. I didn't know about this project of yours until know, but I kinda knew you were onto something big, openrepos could not be your only active project

    Edit | Forward | Quote | Quick Reply | Thanks

    Last edited by Watchmaker; 2014-12-18 at 13:25.
    The Following User Says Thank You to Watchmaker For This Useful Post:
    Wikiwide

     
    Custodian | # 5 | 2014-12-18, 13:19 | Report

    Originally Posted by Watchmaker View Post
    I'm not really sure about this, but aren't vector maps lighter (less space-consuming) than raster ones? Also, I always thought vector maps look better... just my 2 cents
    This is not only about space (as you can fit 32gb sdcard in your phone to preserve more cached data) but also about battery life.
    My short test at earlier project stage shown huge impact when maps are generated in realtime with vector area or even vector vs raster tiles. Also, maps are highly detalized (as almost all data from osm xml is used), and requires POI icons, so svg tile was bigger than png with custom palete.
    I'll test things again show some numbers.

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following 4 Users Say Thank You to Custodian For This Useful Post:
    DeadHorseRiding, OVK, Watchmaker, Wikiwide

     
    Watchmaker | # 6 | 2014-12-18, 13:29 | Report

    Originally Posted by Custodian View Post
    This is not only about space (as you can fit 32gb sdcard in your phone to preserve more cached data) but also about battery life.
    If we have the option to save maps on an sd card, then I'm fine with both options... I recently had to rebalance my btrfs internal memory and I'm trying to pay more attention on how I use it.

    I didn't think about battery consumption, by the way.

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following User Says Thank You to Watchmaker For This Useful Post:
    Wikiwide

     
    nodevel | # 7 | 2014-12-18, 13:36 | Report

    Originally Posted by Custodian View Post
    But could be vector, not sure if this is really needed here.
    No, I think this is fine, as long as one can set the maximum cache size (or directory as mentioned above).

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following User Says Thank You to nodevel For This Useful Post:
    Wikiwide

     
    Custodian | # 8 | 2014-12-18, 20:05 | Report

    Originally Posted by otsaloma View Post
    Assuming this means a server running on localhost that looks and acts much like any online tile server
    Exactly.

    Originally Posted by otsaloma View Post
    Can you tell us what tools you're using to render the tiles?
    Custom C++ engine, standard qt classes QLinePath/QBrush etc.

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following 2 Users Say Thank You to Custodian For This Useful Post:
    OVK, Wikiwide

     
    javispedro | # 9 | 2014-12-18, 22:12 | Report

    Originally Posted by Custodian View Post
    My short test at earlier project stage shown huge impact when maps are generated in realtime with vector area or even vector vs raster tiles. Also, maps are highly detalized (as almost all data from osm xml is used), and requires POI icons, so svg tile was bigger than png with custom palete.
    I'll test things again show some numbers.
    Why aren't you rendering "just in time"? Are the off-the-shelf OSM renderers too slow? Or did I just parse this wrong?

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following User Says Thank You to javispedro For This Useful Post:
    Wikiwide

     
    Custodian | # 10 | 2014-12-18, 22:27 | Report

    Originally Posted by otsaloma View Post
    Custom -- so you're not using Mapnik or similar existing tools? How do you handle things like label placement?
    No, whole thing is written in c++. Labels, routes (roads) signs and others are placed on same coords (specified by osm data), and cropped on tile borders. All elements (backgrounds, areas, paths, pois, signs are drawn in a bit wider area, than actual tile, and then cropped to tile size), so no problems (or very little onces) occures on tiles borders.

    Originally Posted by otsaloma View Post
    Do you convert those downloaded data dumps into some other format to keep on disk? A database? Vector tiles?
    Data dumps (xml or pbf) are converted into internal format.

    Originally Posted by javispedro View Post
    Why aren't you rendering "just in time"?
    Tiles are rendered on request(just-in-time), there are no pre-rendering during import process. If cached tile exists (created earlier with same meta-request) it is used.
    If we talk in ms: render new tile from raw data >> load/render svg tile > load/render png tile.

    Originally Posted by javispedro View Post
    Are the off-the-shelf OSM renderers too slow? Or did I just parse this wrong?
    I dont know why none of map apps written in python uses Mapnik(or other tools) for offline processing/generation for instance. It is working well on jolla, since this is python + postgresql.
    To my mind - they are slow.

    Edit | Forward | Quote | Quick Reply | Thanks

    Last edited by Custodian; 2014-12-18 at 22:36.
    The Following 2 Users Say Thank You to Custodian For This Useful Post:
    OVK, Wikiwide

     
    Page 1 of 2 | 1   2   | Next
vBulletin® Version 3.8.8
Normal Logout