Vector Tiling in Marble Maps @Randa

Categories: KDE, Marble, OSM
Tags: No Tags
Comments: 9 Comments
Published on: September 13, 2015

Earlier today I returned from the KDE Sprint in Randa, where Torsten, Sanjiban, me and 50 other KDE developers met in the Swiss Alps for a week of hacking. Our Marble subgroup concentrated on vector tiling in Marble Maps. After some very productive days we have a first prototype of OpenStreetMap vector tile support ready both on the Desktop and on Android. It will become the new map rendering engine for Marble Maps on Android in future releases.

Our main goal for the Randa Sprint was getting the vector tiling tool chain running. This includes splitting OpenStreetMap data into smaller chunks and providing them on a KDE server (thanks, Ben). These chunks are then downloaded by Marble clients on the Desktop or Android and provide the data for the map you see. Fortunately we got the server infrastructure and a basic vector tile generation tool up and running within the first two days, and had it generate vector tiles for a couple of test regions for the rest of the week.

For texture tiles the server is responsible for rendering the map and client devices just display images. This approach is easy to implement for clients, but no changes to the look of the map are possible. Vector tiles require a client that is capable to render the data by itself. Even though that pushes more work on the client, it has a lot of advantages: The map always looks crisp and all elements can be adjusted dynamically. Some of that can be seen in direct comparison already as shown in this screenshot (best viewed in original size):


Marble has been able to render vector data since the very start, but support for OSM vector data only started to emerge recently. With a working tile server in place we now could concentrate on the fun part, extending and improving OSM vector rendering itself. Beaches, buildings with real height, glaciers, butchers, car sharing and narrow-gauge railways are just a few examples of elements we added to the rendering. There’s still a lot of further elements and details to consider, but we covered all major map features already.


The Randa Sprint brought us much closer to a releasable (end-user ready) version of vector tiling. Chances are good this happens within this year still. Our public beta version of Marble Maps in the Android Play Store will get the update automatically. You can become a beta tester if you’re interested in seeing it emerge. We now also have the weekly Marble Café where everybody is invited to get involved with Marble and learn about recent developments.

Last but not least I’d like to thank everyone who helped making the Randa Sprint possible, especially the awesome organization team around Mario and his family/friends as well as everyone who donated and supported it.

Announcing Marble Maps for Android Open Beta

Categories: KDE, Marble, OSM
Tags: No Tags
Comments: 12 Comments
Published on: September 1, 2015

It’s my pleasure to announce the Open Beta version of Marble Maps for Android. Marble Maps is a port of the Desktop application Marble Virtual Globe and right now features an OpenStreetMap viewer, search and routing. The app is not yet feature complete; future updates will add turn-by-turn navigation, improve vector rendering and add basic OSM editing capabilities.

Marble Maps on Android - Search  Marble Maps on Android - Routing  a3

Our first Marble Maps release builds on the foundations of the Marble library, which runs on Linux, Windows and Mac OS X. The port to Android could be realized thanks to the recent great advances of Qt on Android. The porting itself was done by Gábor Péterffy during his GSoC project which just recently finished. Now we have a small team working on advancing the app further towards our goals of creating fast, visually appealing, easy-to-use free software. Give it a try, it works very nice already despite its early development state :-)

Among the next updates will be support for turn-by-turn navigation. At the same time we are working on support for vector tile rendering. Have a look at the third screenshot above (a manually opened .osm file) for a sneak preview. Vector tile rendering will replace the current image based maps with vector based ones. This will not only reduce the amount of data to be downloaded, but also result in a much better looking/readable map display. Once we reach that point we’ll also look into context sensitive map rendering like night, hike, bike and similar modes.

Fortunately many of the needed pieces for vector tile rendering are already available. To bring them together we will meet in the Swiss Alps and have in intensive week of hacking in the upcoming KDE Sprint in Randa. If you want to support us, please donate some money to cover travel and accomodation expenses for the sprints.

Marble 1.11.3 for Windows

Categories: KDE, Marble
Tags: No Tags
Comments: 12 Comments
Published on: July 12, 2015

In the last months I did not have any system running Windows and therefore could not create new Marble Windows packages. My new T450s however came with a preinstalled Windows 7, so that problem is gone. If you are running Windows, please give the new packages a try:

Please leave a comment whether they work for you. I’ll add the download links to in that case. Compared to the last Windows packages (Marble 1.9.1) there’s an upgrade to Qt 5.5 inside and several new features in Marble itself, e.g. improved support for tours and map editing (the treasure map in the screenshot was done with that) as well as a couple of new map projections.


Marble 1.8.3 Installer for Windows

Categories: KDE, Marble
Tags: No Tags
Comments: 4 Comments
Published on: June 28, 2014

Today I took some time aside to update the slightly outdated Marble installer for Windows. It now covers the latest stable release Marble 1.8.3. Before pushing it to our Installation website I’d like some quick feedback from other Windows users willing to give it a try: Does Marble run fine on your system after installing it? The installer also associates .kml and .gpx files with Marble such that you can open them directly from e.g. Windows Explorer. Download the installer here: marble-setup-1.8.3.exe.

Quick ad intervention: If you like this please donate for the KDE Randa sprint. I’d like to meet with fellow Marble developers to discuss future development. Thanks :-)

Marble 1.8.3 running on Windows 7

Since I don’t plan to step up as a maintainer for our Windows installer it would be great if someone else interested in Windows packages could look into some possible improvements. Compiling against quazip would result in .kmz support. Also the installer ain’t the most pretty nor smart thing in the universe yet; forcing an uninstall of older Marble versions before the installation would be a good start. Since it is based on NSIS improvements shouldn’t be too hard to implement. Interested? It’s quite painless to set things up:

  • Install some compiler, the free MSVC express editions suffice (I used MSVC 2010 Express)
  • Install Qt, the binary Windows packages are fine (I used 4.8.6 for VS 2010).
  • Clone the Marble repository (msysgit is your friend)
  • Install cmake (I used
  • Have cmake generate a MSVC solution for you:
  • Open the generated marble.sln. Inside MSVC open the configuration manager and switch from Debug to Release. Compile. Also build the INSTALL target.
  • Install NSIS. Open src/marble.nsi in some sane text editor and change the srcdir variable to your export folder. Use the NSIS compiler to generate marble-setup.exe from src/marble.nsi.

Watch a HD live stream from space

Categories: KDE, Marble
Tags: No Tags
Comments: 1 Comment
Published on: May 10, 2014

The NASA is currently providing a high-quality live stream from cameras mounted at the International Space Station (ISS). Watch it directly in your browser to see stunning pictures like this:

Image from the ISS HD Earth Viewing Experiment

The site also tracks the current location of the ISS overlayed on Google maps. If you’re looking for an alternative location tracking that gives you more control, give Marble a try: Aside from getting the current position and orbit you can view it in globe projection for a more intuitive display, and shift time back and forth as you like with the position and orbit updated accordingly.

Marble showing the current  position and orbit of ISS.
Marble showing the current position and orbit of ISS.

To get that view in Marble, activate Satellites in the View / Online Services menu. Click on the ISS in the map (search for it if you don’t spot it immediately) and select Display orbit in the menu coming up.

You can use View / Time Control to shift back and forth in time. You might also want to change the satellites being displayed, the screenshot above uses the Space Stations set available from Settings / Configure Marble / Plugins / Satellites.


GCI 2013 and Grand Prize Trip

Categories: KDE, Marble
Tags: No Tags
Comments: Comments Off
Published on: May 2, 2014

How does one become a contributor of Open Source development? Some start with the wish to fix that certain annoying bug in their favorite software. Others want to extend it by a new feature. However you arrive, the path to go to get that seemingly easy task done is often not clear. Where’s the source for that button? How do I make my changes take effect in the software that is run? Finding the right path can be a frustrating journey many are not willing to endure. Google Code-In (or GCI for short) aims to help out: Pairing prospective contributors with mentors from established open source organizations builds a path to successful contributions. KDE has participated in GCI as a mentoring organization since its start in 2010, and did so again in the most recent 2013 edition.

GCI is all about cakes^w tasks.

To increase motivation GCI is organized as a contest. Pre-university students in the age of 13-17 years from most (not all) countries of the world may choose from a large pool of code, documentation, research, quality assurance and user interface tasks. Where does this pool come from in the first place? It is created by the mentors of all ten participating open source organizations who also maintain it during the whole contest. A task is a set of work in one of the five categories that takes a student a couple of hours or days to complete. Besides self-contained tasks often task series are created where either similar work is split into several tasks or related work is split into subsequent tasks. This way all sort of work can be converted into manageable pieces.

Nevertheless GCI is not meant to be a way of distributing work. Indeed it’s much more a communicative event where lots of small teams emerge — students and mentors exchange ideas, collaborate and task after task gets closed. Each successfully completed task earns you a point. In the core of the contest said procedure of choosing a task and completing it is repeated for seven weeks in a row. Afterwards the number of successfully completed tasks is summed up: One earns you a certificate. Three or more a groovy T-shirt to make your friends jealous. And if you are among the twenty top performers you win a trip to Google Headquarters in Mountain View, California!

All 20 GCI 2013 Grand Prize Trip winners in front of the famous Android lawn statues.

Getting there means finishing tasks, but fortunately they’re fun to work on. Maybe even addicting, or why else would you work on them from dusk till dawn? The never-sleeping KDE students added documentation videos for all sorts of KWin effects, updated KGeography for recent changes of regions and polished KStars features. A new touch typing course for the US english keyboard layout and keyboard layout files for more languages were created for KTouch. The Python support of KDevelop was extended in a series of tasks and Amarok got several new testers to verify bugs. The email client Trojitá got a couple of usability improvements and all sorts of new features found their way into Marble. Among them are extensions of its KML support, polishing of the new ownCloud integration and initial support for tours. Inner and outer planets of our solar system are now shown as well as the moon with its phase. New map themes were created, the interactive legend enhanced, the handbook and Python binding documentation extended, routing support improved and a screencast recording feature added. The Marble tasks alone sum up to 115, a considerable amount of the 259 KDE tasks closed in total. At the end of the contest Mikhail Ivchenko from Russia (47 tasks) and Benjamin Kaiser from Australia (46 tasks) ranked top among the KDE students. They joined the lucky twenty who visited Googleplex from April 13th to 17th. For the first time each organization could send a mentor to the trip as well; I was the happy one from KDE to go to Mountain View as well.

Mikhail, myself and Benjamin in the awards ceremony. Photo by Sergej Ivchenko.

The trip was an amazing experience for all of the 50 participants (20 students accompanied by a parent each and 10 mentors), lovingly organized by Stephanie Taylor and other members of the Google Open Source Programs Office. It started off with a meet-and-greet event in San Francisco to get to know everyone, followed by a day around Googleplex in Mountain View, a fun day in San Francisco and a farewell day in the Google San Francisco Office. Group activities like the Google campus tour, a Segway tour in San Francisco, a visit to Alcatraz, a Yacht cruise and a visit to the California Academy of Sciences were varied with lots of food, swags and interesting talks by Googlers. A great experience that all participants will keep in happy memory for a long time! Stephanie summarized it nicely:

This week we had the 20 grand prize winners and 1 mentor from each org here in Northern California for the Grand Prize trip and it was an amazing experience for all of us.  Being able to watch the students literally glow with excitement at meeting their mentors was very heartwarming.
As a bystander watching all of the conversations and hacking going on between students and mentors for 4 days was incredible. Students were not just chatting with the mentors from their orgs they were also involved in highly technical conversations with mentors and students from other orgs.  At every meal and break I would look around and there would be groups of 4-8 people huddled together deep in conversation. I’m sorry we can’t have every one of you attend the trip, but trust me, if you witnessed what I saw you would know that all of those long hours and sleepless nights you put into the 7 week contest helping teenagers learn about open source and your projects was worth it. : ) Kudos to all of you.
We hope that these students will continue to be contributors with your orgs and maybe even mentors and or GSoC students in the years to come.


Back to the roots

Categories: KDE, Maemo, Marble
Tags: No Tags
Comments: 1 Comment
Published on: September 3, 2013

Nokia used to produce some excellent smartphone hardware. If you’re happy to own a N900, there’s an upgrade to Marble 1.5 on its way that brings some fresh life to good old Maemo. It’s in extras-testing now and should appear in extras soon. Kudos to Bernhard who took over maintainership of the Maemo version and worked hard to make this release possible.




New stable release Marble 1.6!

Categories: KDE, Marble
Tags: No Tags
Comments: 11 Comments
Published on: August 15, 2013

Together with the 4.11 Release of KDE Applications a new stable Marble version 1.6 has been released. It surely is the greatest Marble release to date. Arguably each new release of a software should be the greatest so far, yet Marble 1.6 introduces an extraordinary amount of awesomeness. Below is a teaser image highlighting some of the new features. Make sure to check out our visual changelog which mentions even more new stuff and embeds some nice videos. Enjoy :-)

New features in Marble 1.6



QML Layers in Marble

Categories: KDE, Marble
Tags: No Tags
Comments: Comments Off
Published on: May 27, 2012

KDE 4.9 Beta 1 is about to be tagged soon and so is Marble 1.4 Beta 1. Judging from the current bug reports and my own tests it is pretty stable already; I’m not aware of any major bugs. Still we’re not running short of things to do: There’s Marble Touch for Harmattan (Nokia N9), the to-arrive Marble Touch for Plasma Active as well as the usual development work currently centered around our four students and their projects (Google Summer of Code and Season of KDE).

One of Marble’s strength has always been that the vast majority of all functionality is contained in its library and shared by the two (with Marble Touch now three) applications that are shipped with the project as well as all other applications that embed the library. Given that Marble Touch is based on QML/Qt Components, this implies to expose parts of the API to QML.

The content presented by Marble consists of several layers stacked on top of each other. Usually this is a base map (based on several texture and vector layers), intermediate layers like search results, a route, postal codes, clouds and finally information boxes. Most of them can be configured: The base map is setup by .dgml files and brings it’s own properties that can further be tweaked through e.g. Marble’s interactive legend. Search and routing have their own control fields. Additionally these layers can be managed via the C++ API (and most parts also from QML).

What about postal codes? They’re part of the so-called online services, plugins that download a certain type of data for the currently visible map region and display them. Besides postal codes these can be Wikipedia articles, photos (from flickr), weather status and forecast, recent earthquakes and more. Each of these services provides limited interactivity in the Desktop version, but the QML interface was missing so far. Yet it is quite interesting to access the online service data from QML for those activities that are tightly coupled to them: Weather, Friends and the currently emerging “Around Me” that provides information about nearby places and events.

Today I extended the existing online service framework to be able to provide a QML delegate — pretty similar to a delegate e.g. in a QML ListView. Once the delegate is set it deactivates the QWidget based rendering for the given service. Instead the provided  QDeclarativeComponent is used as a factory to build and destroy QML item instances as needed as well as updating their screen positions automatically. The C++ data model item retrieved by the online service is set as the context object in the QML context of the QML item such that it can easily access its properties by their name. This approach has several advantages: Item culling, filtering and positioning can be done in the C++ part, which is faster, easier and reuses existing code. At the same time the layout can be done in QML, which usually results in less code and easily allows to add animations. And finally QML is great to allow interaction with the content.

For a proof-of-concept I took the existing Weather activity and replaced its C++ rendering with a QML delegate as you can see in the short screencast below (Youtube, direct .webm here). As expected the QML part is short, just 50 lines for the legend on the left and 60 lines for the delegate that renders the weather status icon and temperatures. Adding interactivity (showing details on selection of a weather station, marking stations as favorite) will be similarly easy.

Not everything works great though. The old z-value problem naturally comes up again with the QML weather items overlapping the information boxes (except for the QML rendered legend). This happens because of the different, independent rendering that does not allow to control the paint order. Unless I find a way around this I’ll probably go for replacing the remaining upper layers (information boxes mainly) with QML equivalents as well. That’d mean that the lower part of the layers was rendered by C++, the upper part by QML. On the one hand this sounds sane given that the lower layers need little interactivity, but are performance critical, while the upper ones are the reverse. On the other hand this would break the fine grained z-value control we currently have.


The QWidget based rendering of online service layers in Marble can now be replaced by custom QML delegates (sok-2012-plasma-active branch).



Approaching the World of Tablets

Categories: KDE, Marble
Tags: No Tags
Comments: 4 Comments
Published on: May 6, 2012


Last week I packaged Marble Touch 1.3.3 for the Nokia N9/N950 and submitted it to the Ovi store. It’ll appear there in the next days. Compared to 1.3.2 there are the usual bugfixes and smaller improvements, but also new features — most prominently support for bookmarks.

In retrospect, I’m pretty satisfied with the choice to base its development on Qt Components. While I still have a lot of ideas for improving and extending it, the plan for world domination now wants me to shift attention towards a different, yet similar topic: Bringing Marble Touch to Plasma Active. Fortunately the Plasma guys were clever enough to develop the Plasma Components with a very similar API, so the initial port was an easy task for this rainy weekend. Marble Touch in master now supports both Qt Components and Plasma Components. It’s not polished yet, font and icon sizes need to be adjusted and most dialogs don’t play well yet, but the core functionality is all there and works happily. I even tested it on Kubuntu Active in a virtual machine.

One of the reasons I worked on this now is to set a solid base for Utku (you may remember him as the author of Marble’s earthquake and opendesktop plugins as well as the map creation wizard) to join me in his Season of KDE project. Great news! I’m sure we’ll have a nicely polished, end-user ready Marble Touch for Plasma Active at the end of the summer :-)

With the technical and organizational stuff mostly covered it’s back to brainstorming: What use cases do we want to cover on tablets? Routing and navigation are fundamental ones on smartphones. They’re also important on tablets, yet their larger screen and different usage patterns (couch mode, second screen) enable further use cases. So the second part of our motto — “find your way and explore the world” — becomes more important. I’m thinking of showing more details about places (photos, weather, user content) arranged in a convenient way. Furthermore owncloud integration would be lovely to easily share/synchronize your bookmarks, routes and photos across devices. What would you like to see?


page 1 of 1
Welcome , today is Saturday, February 6, 2016