Tuesday, December 22, 2020

Christmas Maps

 So, it's that time of year again. And even if this year is a lot different than usual in many ways I thought we should still follow the tradition of summing up some of the last updates to GNOME Maps in 2020 (and before the first beta of what will be part of GNOME 40, in the new versioning scheme).

The biggest change that was landed since the release of 3.38 has been the redesigned ”place bubbles” by James Westman. James has already written an excellent blog post highlighting this. But I still want point this out here as well. The bubbles now feature larger thumbnails with images from Wikipedia when places are tagged with Wikipedia articles in OpenStreetMap (and the article features a title image), utilizing the MediaWiki API. This feature has been present for some time, but with the redesign the thumbnail are larger and has a more balanced and prominent place. Furthermore a short summary of the Wikipedia article is also shown (in the language preferred by the user's locale settings, if the article is translated to that language in Wikipedia). The details are also shown in a nicer list view-style with icons to give visual cues.


And this is not all there is to it either. James has been starting work on making these adaptive so they can adjust to smaller (narrower) screen sizes, such as on phones:


This is something we hope to finish up in time for GNOME 40.


James also implemented better handling for cases where website URLs are malformed in OSM (such as one missing the proptocol, e.g. https:// or http://), skipping showing the link instead of presenting a link which will not work. Along with this the dialog for editing places in OSM will highlight a malformed website field (and the code has provisioning for adding other validators further on, e.g. for phone numbers).



Another thing that had bothered me a bit lately is how we render opening hours. Before we displayed them in a single line:


As can be seen here the line wrapping happens in a very awkward place right between a day and it's time interval.

So I took the opportunity now that we have the list with separators to do some restructuring rendering it a grid to get a cleaner look:


I also re-implemented the rendering of times using the localization API from EcmaScript (JS) that we get via GJS. For example this is how it would look in Persian:

Also since the last time we've had some new contributors. Ravi Shankar improved the detection of invalid URLs and Anubhav Tyagi has improved loading of shape layer files (GeoJSON, GPX, and KML) by replacing synchronous file I/O with asynchronous while loading and also an update to show a dialog asking the user for confirmation when loading files larger than 20 MB since it can takes some time to load (and parse).

And last, but not least, Maps old-timer Jonas Danielsson contributed a fix to normalize phone numbers in the links shown for phone number when an app is installed that can handle tel: URIs. This allows the Calls app on e.g. the PinePhone to use these links directly from Maps.

I think that was pretty much it for now!

And until next time, happy holidays and merry Christmas!

3 comments:

  1. as I needed a moment to find the blog post by James you may want to take the direct link: https://www.flyingpimonster.net/2020/11/17/gnome-maps-place-bubble.html

    ReplyDelete
  2. What I wonder is, why is zooming in and out so bad, especially on the phone/touchscreen. Also it seems to let loose cached tiles way too fast, just moving around in a circle causes the same tiles to be streamed over and over again.

    ReplyDelete
    Replies
    1. Yeah. Zooming on touch is pretty bad. The actual rendering of the tiles is using libchamplain (which in turn uses Clutter). So that would basically require addressing there. But since champlain (and Clutter) is not really maintained, and also will not work with GTK 4 a replacement map tile rendering widget using GTK (reusing concepts from libchamplain) is being developed. The new library is called libshumate. So things like pinch-zooming would probably have to wait for that.
      The caching issue sounds strange. libchamplain does have a cache, and as far as I remember the cache should time-out after 7 days.
      Did you use something like Wireshark to capture this? Would probably need to investigate.

      Delete