Saturday, December 23, 2023

Christmas Maps 2023

 


It's that time of the year again, near the winter solstice (or the summer dito in the southerm hemisphere), so I guess it's time for the yearly wrap-up blog post. And yeah, Santa Claus lives in Rovaniemi, Finland. Despite some misinformed claims about the North Pole… 😎

There's been some good progress during 2023 for Maps and libshumate. This was also the year I actually attended my first GUADEC in-person. This was a really nice experience, meeting with a lot of people from the broader GNOME community. Though I've met many at FOSDEMs over the years.


When it comes to the last progress in Maps, after the last GNOME 45 stable release. With the help from the design team, I have yet another time (in 45 we moved the zoom buttons out of the headerbar, and added a rotation indicator/reset button). Now the zoom controls are moved to the lower part, to give better balance. They will also respect the dark/light theme setting. But will really shine once we get a dark map style.


Also, as a little „julegave” to our Norwegian neighbours, Maps now supports public transit routing using OpenTripPlanner v2 with GraphQL, currently enabled for Norway's national Entur API provider.



The first screenshot also shows the new subway icon by Jakub Steiner, which adds a more distinctive look compared to other trains.

 Felipe Kinoshita has also ported the setup dialog for doing SSO sign-in to OpenStreetMap for POI editing to use new libadwaita widgets.



 

 

Over in libshumate there's also been a lot of impressive improvements to the new vector map renderer implementation.

Among other things James has implemented is libshumate-specific debug information exposed via the GTK inspector, so that you can display a debug overlay and get tile and object bounding box lines showing.


The new GNOME-styled map stylesheet we are working on has also seen improvements.

I added support for ferry lines and gondola lines.





James has also been working on implementing localized highway shields by leveraging the OSM Americana project.



Also showing points-of-interests using GNOME-style icons in the map style. The design team has drawn up a bunch of new nice icons for different place types.


With that I will wish happy hollidays (of your choice) and a happy new year on behalf of the GNOME Maps Team 🎄🎅🍾

Tuesday, September 26, 2023

Maps and GNOME 45


 

The GNOME 45.0 release has just recently been published, and with it a new release of Maps. Accompaning the release is also a new stable version (1.1.0) of our libshumate map rendering library containing a lot of improvements to the client-side vector-based renderer.

Many of the new features has already been presented here, but a short re-cap:

The zoom control buttons has been moved (back) to using overlay buttons on top of the map view. A rotation button has also been added, appearing when the map is rotated away from the regular “north is up” which can then be clicked to reset the rotation.



As well as a browse mode for the search popover allowing to look for nearby points-of-interest by category.


The other new big thing is the addition of the experimental vector-based map layer (leveraging the enhanced vector support in libshumate 1.1.0). This is available in run-time when the build of libshumate used is compiled with vector support enabled (it's currently opt-in at build-time, but maybe we should enable it by default for 1.2.0, making it opt-out instead? There could still be use-cases where building a slimmed-down version with only raster support could be useful). The Flatpak for Maps 45.0 on Flathub has a bundled libshumate with the vector renderer enabled. There still remains some work to be done that wasn't ready for 45, so for example it's not yet possible to directly click on labels and markers on the map. As this will require further refactoring of the internals e.g. how store information about places (for caching, and also for storing bookmarked places).

The experimental layer currently uses the OSM Libre stylesheet, but eventually the plan is to switch our own GNOME-specific style using color hues from the GNOME icon palette.

New stuff looking forward to in upcoming releases:

James Westman has been busy not only with improving the vector renderer in libshumate, but he has also made progress on the new map style.




 The style now finally includes initial support for rail lines!

The style can be tested using the web renderer: https://maps.jwestman.net/

It's also possible to clone the git repo for the style and run it using a built-in Python-based launcher (this uses actual libshumate rendering, typically would require installing development packages to your host system): https://gitlab.gnome.org/jwestman/map-style

Another cool thing (that can also be seen in the web screenshots above) is localized highway shield rendering building on the OSM Americana project: https://wiki.openstreetmap.org/wiki/OpenStreetMap_Americana

 

An experimental branch implementing shield rendering in Maps is also work-in-progress.



This currently uses the OSM Liberty style (the same as the current experimental map layer in Maps 45).

So it's looking pretty exciting for for 46 😊

Until next time, happy mapping!

Saturday, July 1, 2023

Summer Maps

 It's about time for the yearly (Northern Hemisphere) Summer Maps blog post. 😎



Since the release of 44.0 in March, aside from some fixes (like adding support for authentication HTTP headers in OpenTripPlanner plugin, as now needed by the Finnish Digitransit service) there has also been some changes on the surface in Maps.

First, Jakub Steiner has contributed with a refresh of icons used for transportation modes, and the various mode of public transit.

Here we can see the icons for transportation modes (walking, biking, car, and public transit, using a „train icon“) using the new GNOME icon style

In this capture we can see the new icons for metro (underground, subway service)


Above there is some samples from Portland, showing trams and gondolas.


Another new feature is the „Explore nearby points-of-interest“ browser mode of the main search entry, allowing the select preset categories grouped by main and sub categories. Clicking on a subcategory then proceeds with a search given the selected type of place centered around the center of the current map view sorted by, and showing the distance to the place („as the crow flies distance“):

Clicking the down-arrow button, or using the new CTRL+SHIFT+F shortcut shows the main categories

After selecting a sub category

Showing points-of-interest results with distances

Results nearby (less than 100 m, or 300 feet when using Imperial measures) are shown with a „less than“ indication as these can be somewhat imprecise, especially for things with a “two-dimensional extent“ such as larger buildings, or areas

 

This feature was something I had in mind for a while, and there has been an old issue about this floating around since the Bugzilla days (before the migration to GitLab, it was issue #3 after the migration…).

I remember envisioning the outlines of this during a walk one afternoon/evening early in winter of 2021 during the mandated „working from home“ days when we had step contest at work. But I had put the idea off before in anticipation of the GTK 4 port as I din't want introduce too much new UI needing porting before that). But now that that has been finished it was time…

 Behind the scenes this is using the Overpass API to search the OpenStreetMap database based on tags and centered around a specific coordinate.

And by the way, the set of categories is defined in JSON-like object structure in the src/potCategories.js module, so this can be altered relatively easy (and add Overpass query parameter „fragments“.


The next thing, the routing sidebar has had some issues when using a small form-factor device (e.g. phones), now there is WIP in an MR to migrate the sidebar to use an OverlaySplitView from libadwaita.


This allows swiping in from the edge to bring up the routing sidebar and „swipe away“ the sidebar to close it on touch screens.

It also „collapses“ the view so the sidebar is overlayed on the map view rather than „pushing it aside“ on narrower screens:


This is still not finally merged to main, but hopefully this should make it in for 45.0.


Another thing is that since migration to libshumate it is possible to rotate the map view using touch gestures. And as we didn't have a way to reset the rotation (beside restarting the application) to mitigate that I have added a compass button showing when the view rotated away from normal „north is up”.

 

Also the zoom buttons have been moved back to be overlay buttons as they where back in the day. They where changed to headerbar button back in 2017 as a work-around for GTK widgets not being able to be overlayed on top of Clutter surfaces on Wayland. But this is no longer an issue as we don't use Clutter nowadays.

This overlay button design might be subject for a redesign later on. Possible moving them down to the bottom end (right in LTR) corner, similar to the zoom controls of the new Loupe image viewer app. The license banner would then be displayed on startup as toast maybe, or as popover when clicking an info button. Or something like that.

And last, but not least we had a contribution from Szymon Kłos who implemented support loading tracks recorded by Garmin sport watches as shape layers. Thanks Szymon!

I will also attend GUADEC in Riga later in July, so those who go there, maybe see you there!

And I think that's about it for this time!

Friday, March 10, 2023

Maps and GNOME 44

 So it's that time that occurs twice a year when we're approaching a new GNOME release, this time 44.



In Maps there's been some polish touching up some of the rough edges in 43.x (from the GTK 4 port).

For example keyboard navigation of the search results is back.


Also, the focus handling of the entry is fixed so that the quirky flickering (re-popping up the the results popover when typing a space into the search entry) is now gone.

Also thanks to Christopher Davis for fixing up the styling of the results!

We also had contributions from an anonymous user improving the style of some labels, among others the tooltips of the headerbar buttons.


Adrien Plazas has worked on making the „Export as Image“ dialog fit on phones.


Unfortunately an issue has come to our attention with the way the „go to“ animations works, resulting some times when covering large distances (for example when selecting a search result far away) that results in throttling from the tile server (HTTP 429, „too many requests”). This results in empty tiles showing up at the destination (and one needs to sometimes wait a while before Maps gets the view refreshed with new tiles (after restarting to force re-trying).

 As this results in a really bad user experience as a work-around we have disabled the animations for now (the animations when zooming is still in place, and of course panning the map view still works as usual).

I also cherry-picked this for the 43 branch, and will probably also cut a 43.4 with this change (versions prior to 43.0 is not affected, as the animations in libchamplain uses another algorithm, first zooming out „high“ (a low zoom level) before moving, resulting in less intermediate tiles compared to the “fly to“-like animations now used in libshumate.

 We will try to come up with a better solution in libshumate soon. Either reverting to an approach like that in libchamplain, or try to implement our own rate limiting of some sort during animations to avoid firing off too many requests.

 Meanwhile at the libshumate side James Westman has been busy working on the vector tile support implementing label support among other things.

He is also working on a vector tile style using the GNOME color palette in light and dark variants.


This can be trying out on https://maps.jwestman.net/

 There will also be some other things coming for the next development cycle for GNOME 45, but let's save that for next time!