|
| 1 | +--- |
| 2 | +title: "MapLibre Newsletter June 2025" |
| 3 | +date: "2025-07-02" |
| 4 | +categories: ["newsletter"] |
| 5 | +authors: [bart, harel, yuri, ianthetechie, ramyaragupathy] |
| 6 | +draft: false |
| 7 | +--- |
| 8 | + |
| 9 | +import { Image } from "astro:assets"; |
| 10 | +import mapmeLogo from "/public/img/mapme-logo.svg"; |
| 11 | +import maplibreLogo from "/public/img/maplibre-logos/maplibre-logo-for-light-bg.svg"; |
| 12 | +import colorRelief from "./color-relief.png"; |
| 13 | +import renderingStats from "./rendering-stats.png"; |
| 14 | +import desertBus from "./desert-bus.png"; |
| 15 | + |
| 16 | +Welcome to the June edition of the MapLibre newsletter! |
| 17 | + |
| 18 | +This month's roundup includes new feature updates in MapLibre Native and Web, along with milestones in projects like the SwiftUI DSL and Compose Playground. Weβre also pleased to share that the [MapLibre Workshop Kit](https://github.com/maplibre/workshop) now supports GitHub Codespaces, making it easier to get started without any local setup which means you can generate and serve tiles directly on cloud. |
| 19 | + |
| 20 | +Weβre grateful for the continued support of all our sponsors and contributors who make this work possible. In this edition we would specially like to highlight the renewed sponsorship support from [Mapme](https://mapme.com/) π |
| 21 | + |
| 22 | +<div |
| 23 | + style={{ |
| 24 | + backgroundColor: "white", |
| 25 | + padding: "2rem", |
| 26 | + border: "10px solid #cfd8dc", |
| 27 | + borderRadius: "0", |
| 28 | + marginBottom: "3rem", |
| 29 | + display: "flex", |
| 30 | + justifyContent: "center", |
| 31 | + alignItems: "center", |
| 32 | + gap: "2rem", |
| 33 | + flexWrap: "nowrap", |
| 34 | + overflow: "hidden", |
| 35 | + flexDirection: "column", |
| 36 | + }} |
| 37 | +> |
| 38 | + <div |
| 39 | + style={{ |
| 40 | + display: "flex", |
| 41 | + justifyContent: "center", |
| 42 | + alignItems: "center", |
| 43 | + gap: "2rem", |
| 44 | + flexWrap: "nowrap", |
| 45 | + width: "100%", |
| 46 | + }} |
| 47 | + > |
| 48 | + <Image |
| 49 | + src={maplibreLogo} |
| 50 | + alt="MapLibre logo" |
| 51 | + style={{ |
| 52 | + width: "40%", |
| 53 | + maxWidth: "300px", |
| 54 | + height: "auto", |
| 55 | + objectFit: "contain", |
| 56 | + }} |
| 57 | + /> |
| 58 | + <Image |
| 59 | + src={mapmeLogo} |
| 60 | + alt="Mierune logo" |
| 61 | + style={{ |
| 62 | + width: "40%", |
| 63 | + maxWidth: "330px", |
| 64 | + height: "auto", |
| 65 | + objectFit: "contain", |
| 66 | + }} |
| 67 | + /> |
| 68 | + </div> |
| 69 | + <div |
| 70 | + style={{ |
| 71 | + marginTop: "1rem", |
| 72 | + fontSize: "1rem", |
| 73 | + textAlign: "center", |
| 74 | + color: "#263238", |
| 75 | + fontStyle: "italic", |
| 76 | + }} |
| 77 | + > |
| 78 | + Thanks to Mapme for their continued support (2024β2025) π€ |
| 79 | + </div> |
| 80 | +</div> |
| 81 | + |
| 82 | +## π± MapLibre Native |
| 83 | + |
| 84 | +**Releases this month** |
| 85 | + |
| 86 | +- MapLibre iOS: [6.15.0](https://github.com/maplibre/maplibre-native/releases/tag/ios-v6.15.0), [6.16.0](https://github.com/maplibre/maplibre-native/releases/tag/ios-v6.16.0). |
| 87 | +- MapLibre Android: [11.10.0](https://github.com/maplibre/maplibre-native/releases/tag/android-v11.10.0), [11.10.1](https://github.com/maplibre/maplibre-native/releases/tag/android-v11.10.1), [11.10.2](https://github.com/maplibre/maplibre-native/releases/tag/android-v11.10.2), [11.10.3](https://github.com/maplibre/maplibre-native/releases/tag/android-v11.10.3), [11.11.0](https://github.com/maplibre/maplibre-native/releases/tag/android-v11.11.0). |
| 88 | + |
| 89 | +Refer to the changelog and the linked PRs in the changelog for the details, but here are some highlights from this month's releases. |
| 90 | + |
| 91 | +- We now have [level-of-detail (LOD) controls](https://github.com/maplibre/maplibre-native/pull/2958) available. This functionality is especially useful for navigation use-cases where the map is tilted. To avoid overloading the system you can use the LOD controls to use tiles with a lower zoom level for areas that are further in the distance. |
| 92 | + |
| 93 | +- We have also added the ability to toggle a [rendering statistics HUD](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/renderingstatisticshud/). This is especially useful for users of MapLibre Native on embedded systems. |
| 94 | + |
| 95 | +<div style={{ textAlign: "center" }}> |
| 96 | + <Image |
| 97 | + src={renderingStats} |
| 98 | + style={{ |
| 99 | + maxWidth: "300px", |
| 100 | + maxHeight: "600px", |
| 101 | + width: "100%", |
| 102 | + height: "auto", |
| 103 | + display: "inline-block", |
| 104 | + }} |
| 105 | + alt="Rendering statistics HUD" |
| 106 | + /> |
| 107 | + <p |
| 108 | + style={{ |
| 109 | + fontSize: "0.9rem", |
| 110 | + color: "#555", |
| 111 | + marginTop: "8px", |
| 112 | + fontStyle: "italic", |
| 113 | + }} |
| 114 | + > |
| 115 | + <em>Rendering statistics HUD</em> |
| 116 | + </p> |
| 117 | +</div> |
| 118 | + |
| 119 | +- MapLibre iOS 6.15.0 has support for defining plugin layers as described in [last month's newsletter](https://maplibre.org/news/2025-06-02-maplibre-newsletter-may-2025/). See [this page in the iOS documentation](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/pluginlayers) for more information on what is currently possible and how to create your own plugin layers. There is a [tracking issue](https://github.com/maplibre/maplibre-native/issues/3593) to bring plugin layers to Android too. We are looking forward to see what plugins are developed by the community. |
| 120 | + |
| 121 | +- We fixed a dangling reference bug on Android in [#3522](https://github.com/maplibre/maplibre-native/pull/3522) and [#3541](https://github.com/maplibre/maplibre-native/pull/3541). Thanks to the engineers from ExpressVPN who brought this issue to our attention and were quick to provide feedback to our fix. |
| 122 | + |
| 123 | +**In Development** |
| 124 | + |
| 125 | +- We are developing a long running test for both [Android](https://github.com/maplibre/maplibre-native/pull/3512) and [iOS](https://github.com/maplibre/maplibre-native/pull/3592). This test is intended to ensure that MapLibre Native remains stable when running for very long periods of time (72 hours+). After a vote by the developers, this 'very long running test' is now officially called **Desert Bus**, named after a game from the 90's where you had to drive a bus from Arizona to Nevada (an exciting 8 hour playthrough can be found on [YouTube](https://youtu.be/2LtiHla1dNg)). |
| 126 | + |
| 127 | +<div style={{ textAlign: "center" }}> |
| 128 | + <Image |
| 129 | + src={desertBus} |
| 130 | + style={{ |
| 131 | + maxWidth: "400px", |
| 132 | + maxHeight: "400px", |
| 133 | + width: "100%", |
| 134 | + height: "auto", |
| 135 | + display: "inline-block", |
| 136 | + }} |
| 137 | + alt="Screenshot from Desert Bus" |
| 138 | + /> |
| 139 | + <p |
| 140 | + style={{ |
| 141 | + fontSize: "0.9rem", |
| 142 | + color: "#555", |
| 143 | + marginTop: "8px", |
| 144 | + fontStyle: "italic", |
| 145 | + }} |
| 146 | + > |
| 147 | + <em>Screenshot from Desert Bus (the game, not our test)</em> |
| 148 | + </p> |
| 149 | +</div> |
| 150 | + |
| 151 | +- There is an open [style spec proposal](https://github.com/maplibre/maplibre-style-spec/pull/1204) for how to define font faces in MapLibre style. Access to font files is needed for rendering complex scripts. The style spec extension is the last hurdle before the [PR that intergrates Harfbuzz in MapLibre Native](https://github.com/maplibre/maplibre-native/pull/1439) can be brought to the finish line. |
| 152 | + |
| 153 | +## π MapLibre Web |
| 154 | + |
| 155 | +We have released [version 5.6.0](https://github.com/maplibre/maplibre-gl-js/releases/tag/v5.6.0) this month which includes two great features: |
| 156 | + |
| 157 | +- [**Global State**](https://maplibre.org/maplibre-style-spec/state/): This feature lets you define the equivalent of global variables in the style JSON and use them throughout the style for things like multilingual support & color theming. This valuable feature addition was contributed by TomTom. Thanks!! |
| 158 | +- **Color relief layer**: The new `color-relief` layer will allow to define coloring of the map according to [elevation](https://maplibre.org/maplibre-style-spec/expressions/#color-relief) as can be seen in the image below. |
| 159 | + |
| 160 | +<div style={{ textAlign: "center" }}> |
| 161 | + <Image |
| 162 | + src={colorRelief} |
| 163 | + style={{ |
| 164 | + maxWidth: "400px", |
| 165 | + maxHeight: "800px", |
| 166 | + width: "100%", |
| 167 | + height: "auto", |
| 168 | + display: "inline-block", |
| 169 | + }} |
| 170 | + alt="Color relief layer GL JS" |
| 171 | + /> |
| 172 | + <p |
| 173 | + style={{ |
| 174 | + fontSize: "0.9rem", |
| 175 | + color: "#555", |
| 176 | + marginTop: "8px", |
| 177 | + fontStyle: "italic", |
| 178 | + }} |
| 179 | + > |
| 180 | + <em>Color relief layer GL JS</em> |
| 181 | + </p> |
| 182 | +</div> |
| 183 | + |
| 184 | +Besides the above nice additions there were some bug fixes contributed. |
| 185 | +We would like once more to thank all the people who devote time to contribute to this project. Without you, it would've not been where it is today! |
| 186 | + |
| 187 | +π We've also been nominated to "project of the week" by PullFlow as can be read here on [their LinkedIn post.](https://www.linkedin.com/posts/pullflow_developerexperience-opensource-webmapping-activity-7339305562985086976-tuR3) |
| 188 | + |
| 189 | +## π§βπ» MapLibre SwiftUI DSL |
| 190 | + |
| 191 | +The [SwiftUI DSL](https://github.com/maplibre/swiftui-dsl) continues to support more of the underlying style features from MapLibre Native, directly from SwiftUI. Over the last month we've merged the following: |
| 192 | + |
| 193 | +- Support for [`lineDashPattern` on `LineStyleLayer`](https://github.com/maplibre/swiftui-dsl/pull/94). This lets you customize the appearance of polylines directly from SwiftUI code (including via reactive bindings!). |
| 194 | +- Support for [new releases of SwiftSyntax](https://github.com/maplibre/swiftui-dsl/pull/93) (the library that Apple released to enable macros, which are used heavily in the library). |
| 195 | + |
| 196 | +Both PRs came from first-time contributors, which is exciting! If you're using MapLibre with SwiftUI, check it out. And if you're missing a particular feature, adding it just might be easier than you think. |
| 197 | + |
| 198 | +## π¦ MapLibre Compose Playground |
| 199 | + |
| 200 | +The MapLibre Compose Playground, one of several community projects integrating MapLibre Native with Jetpack Compose, has reached a new milestone: [a 1.0.0 release](https://github.com/Rallista/maplibre-compose-playground/releases/tag/1.0.0) π |
| 201 | + |
| 202 | +The milestone is a reflection that the library is now stable and being used in "real" apps. The maintainers are also happy to announce that the library now targets MapLibre Android's 11.x branch. Previously there were a few edge cases which mostly manifested on emulators, but these have now been resolved (hat tip to the MapLibre Native team!). |
| 203 | + |
| 204 | +## π₯ Meet Us at FOSS4G Europe! |
| 205 | + |
| 206 | +The MapLibre team will be at [FOSS4G Europe](https://2025.europe.foss4g.org/) this month in Mostar. If youβre attending, stop by, and letβs talk maps! |
| 207 | + |
| 208 | +ποΈ Dates: July 14-20, 2025 <br></br> |
| 209 | +π Location: [Mostar, Bosnia-Herzegovina](https://www.openstreetmap.org/relation/8480923) |
| 210 | + |
| 211 | +## ποΈ Monthly meetings |
| 212 | + |
| 213 | +We continue our regular community calls on the _**second Wednesday**_ of each month, with an additional session on the last Wednesday to better accommodate Asia/Oceania time zones. |
| 214 | + |
| 215 | +Upcoming Calls |
| 216 | + |
| 217 | +- MapLibre Navigation: July 09, 2025 β 4:00β5:00 PM UTC |
| 218 | +- MapLibre Native: July 09, 2025 β 5:00β6:00 PM UTC |
| 219 | +- MapLibre GL JS: July 09, 2025 β 6:00β7:00 PM UTC |
| 220 | + |
| 221 | +π MapLibre Eastern Call |
| 222 | + |
| 223 | +Held on the last Wednesday of the month at an Asia/Oceania-friendly hour: |
| 224 | + |
| 225 | +- July 30, 2025 β 9:00β10:00 AM UTC |
| 226 | + |
| 227 | +π [View meeting times in your local timezone](https://notime.zone/OUDtdgeUfJKXH). |
| 228 | + |
| 229 | +All calls are open to everyone. Zoom links are shared in the MapLibre Slack. |
| 230 | +Not yet a member? Request an invite via the [OpenStreetMap US Slack](https://slack.openstreetmap.us/). |
| 231 | +Weβd love to see you there! |
0 commit comments