|
| 1 | +--- |
| 2 | +title: "MapLibre Newsletter February 2025" |
| 3 | +date: "2025-03-03" |
| 4 | +categories: ["newsletter"] |
| 5 | +authors: [bart, yuri, harel, josxha, ramyaragupathy] |
| 6 | +draft: false |
| 7 | +--- |
| 8 | + |
| 9 | +import { Image } from "astro:assets"; |
| 10 | +import mlt_road_network_demo from "./mlt-road-network-demo.png"; |
| 11 | +import custom_draw_layer_demo from "./custom-draw-layer-demo.png"; |
| 12 | +import flutter_preview from "./flutter-preview.mp4"; |
| 13 | +import flutter_ios_preview from "./ios-preview.mp4"; |
| 14 | +import stamen_ml from "./stamen-ml.gif"; |
| 15 | + |
| 16 | +We’re excited to share key updates across MapLibre Native, GL JS, Flutter, and the MapLibre Tile Specification (MLT), along with details on upcoming community meetings. |
| 17 | + |
| 18 | +A huge thank you to everyone who supports MapLibre through [GitHub Sponsors](https://github.com/sponsors/maplibre) and [OpenCollective](https://opencollective.com/maplibre) platforms 🎉. Through these channels, we received $4,644.23 in 2023, and in 2024, contributions grew by 24.3% to $5,772.77 USD. Your support is essential in sustaining and expanding our open-source ecosystem - we truly appreciate it! |
| 19 | + |
| 20 | +We’ve also published the Q4 2024 Financial Report, providing insights into our funding and expenditures. You can read the full report [here](https://maplibre.org/about/reports/Financial-Report-Q4-2024.pdf). |
| 21 | + |
| 22 | +With that note of gratitude, here’s the February 2025 round-up. |
| 23 | + |
| 24 | +## MapLibre Native |
| 25 | + |
| 26 | +- Implementation of the new [MapLibre Tiles format](https://github.com/maplibre/maplibre-tile-spec#maplibre-tiles-mlt) is in full swing. There is a [PR in the `maplibre/maplibre-tile-spec`](https://github.com/maplibre/maplibre-tile-spec/pull/441) repo with a C++ reader implementation and a [draft PR](https://github.com/maplibre/maplibre-native/pull/3246) for the intergration into MapLibre Native. |
| 27 | + |
| 28 | + Even though development has only recently started, this proof-of-concept can already use MLTs (MapLibre Tiles) as a source alongside [MVTs](https://github.com/mapbox/vector-tile-spec). |
| 29 | + |
| 30 | +{" "} |
| 31 | + |
| 32 | +<div |
| 33 | + style={{ |
| 34 | + display: "flex", |
| 35 | + justifyContent: "center", |
| 36 | + flexDirection: "column", |
| 37 | + alignItems: "center", |
| 38 | + }} |
| 39 | +> |
| 40 | + <Image |
| 41 | + src={mlt_road_network_demo} |
| 42 | + style={{ |
| 43 | + maxWidth: "550px", |
| 44 | + width: "100%", |
| 45 | + height: "auto", |
| 46 | + display: "inline-block", |
| 47 | + }} |
| 48 | + alt="Screenshot showing the road network in Europe from some demo MLTs based on Bing Maps data." |
| 49 | + /> |
| 50 | + <div |
| 51 | + style={{ |
| 52 | + fontSize: "0.9em", |
| 53 | + color: "#BEBEBE", |
| 54 | + marginTop: "8px", |
| 55 | + textAlign: "center", |
| 56 | + }} |
| 57 | + > |
| 58 | + Screenshot showing the road network in Europe from some demo MLTs based on |
| 59 | + Bing Maps data. |
| 60 | + </div> |
| 61 | +</div> |
| 62 | + |
| 63 | +- [MapLibre iOS 6.11.0](https://github.com/maplibre/maplibre-native/releases/tag/ios-v6.11.0) is now available. |
| 64 | + |
| 65 | + - Custom Style Layers, allow drawing directly on the map using the Metal API with full Swift compatibility. Learn more in [this guide](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/customstylelayerexample). |
| 66 | + |
| 67 | +- Looking ahead, the upcoming MapLibre iOS 6.12.0 release will expose some low-level events for better observability. More details can be found in [this article](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/observerexample). |
| 68 | +- Custom Drawable Layers allow drawing on the map in a platform-independent way. Currently C++ is required to implement these layers. This month [a significant PR](https://github.com/maplibre/maplibre-native/pull/3210) was merged, introducing several imporvements, including: |
| 69 | + |
| 70 | + - enhanced functionality and improvements to custom drawable layer, |
| 71 | + - support for uploading 3D geometries, expanding rendering possibilities. |
| 72 | + |
| 73 | + {" "} |
| 74 | + |
| 75 | + <div |
| 76 | + style={{ |
| 77 | + display: "flex", |
| 78 | + justifyContent: "center", |
| 79 | + flexDirection: "column", |
| 80 | + alignItems: "center", |
| 81 | + }} |
| 82 | + > |
| 83 | + <Image |
| 84 | + src={custom_draw_layer_demo} |
| 85 | + style={{ |
| 86 | + maxWidth: "550px", |
| 87 | + width: "100%", |
| 88 | + height: "auto", |
| 89 | + display: "inline-block", |
| 90 | + }} |
| 91 | + alt="Custom Drawable Layer demo available in the GLFW app if you press 'V'." |
| 92 | + /> |
| 93 | + <div |
| 94 | + style={{ |
| 95 | + fontSize: "0.9em", |
| 96 | + color: "#BEBEBE", |
| 97 | + marginTop: "8px", |
| 98 | + textAlign: "center", |
| 99 | + }} |
| 100 | + > |
| 101 | + Custom Drawable Layer demo available in the GLFW app if you press 'V'. |
| 102 | + </div> |
| 103 | + </div> |
| 104 | + |
| 105 | +- [@frankkienl](https://github.com/frankkienl) from Flitsmeister has created a sample app demonstrating how to integrate MapLibre with Android Auto (and Automotive). This is a fantastic starting point for developers looking to explore automotive applications. Check out the repository here: [MapLibre Android Auto Sample](https://github.com/maplibre/MapLibre-Android-Auto-Sample). |
| 106 | + |
| 107 | +## Web |
| 108 | + |
| 109 | +February was a shorter month, but we still managed to roll out [MapLibre GL JS 5.1.1](https://github.com/maplibre/maplibre-gl-js/releases/tag/v5.1.1) with key improvemens. |
| 110 | + |
| 111 | +One notable highlight is the powerful `addProtocol` feature which enabled the release of a new plugin for loading arbitrary fonts using tinySDF:Check out [maplibre-local-glyphs](https://www.npmjs.com/package/maplibre-local-glyphs), developed by [@spatialillusions](https://github.com/spatialillusions) - a big thanks to their contribution! |
| 112 | +This will hopefully pave the way to other font functionality that's coming in the near future. Stay tuned for further developments 🗺️. |
| 113 | + |
| 114 | +## MapLibre Flutter |
| 115 | + |
| 116 | +Version `0.2.1` of [flutter-maplibre](https://github.com/josxha/flutter-maplibre) got released this month. Key feature of this release is the possibility of synchonous controller calls on android due to the exciting release of [Flutter 3.29](https://medium.com/flutter/whats-new-in-flutter-3-29-f90c380c2317). This is a big milestone to seamlessly display and position Flutter widgets on top of the map. Check out the [changelog](https://github.com/josxha/flutter-maplibre/blob/main/CHANGELOG.md#021) for the full list of improvements. |
| 117 | + |
| 118 | +Work is also [progressing on iOS support](https://github.com/josxha/flutter-maplibre/issues/26), with completion expected by March 2025. Stay tuned! |
| 119 | + |
| 120 | +#### Feature Previews |
| 121 | + |
| 122 | +<div |
| 123 | + style={{ |
| 124 | + display: "flex", |
| 125 | + justifyContent: "center", |
| 126 | + gap: "20px", |
| 127 | + flexWrap: "wrap", |
| 128 | + }} |
| 129 | +> |
| 130 | + <div style={{ textAlign: "center", maxWidth: "48%" }}> |
| 131 | + <video src={flutter_preview} controls style="width: 50%;"></video> |
| 132 | + <div style={{ fontSize: "0.9em", color: "#BEBEBE", marginTop: "8px" }}> |
| 133 | + <strong>Flutter Widgets on Top of the Map View</strong> |
| 134 | + <br></br> |
| 135 | + Demo showcasing Flutter widgets rendered on top of the map view. |
| 136 | + </div> |
| 137 | + </div> |
| 138 | + <div style={{ textAlign: "center", maxWidth: "48%" }}> |
| 139 | + <video src={flutter_ios_preview} controls style="width: 50%;"></video> |
| 140 | + <div style={{ fontSize: "0.9em", color: "#BEBEBE", marginTop: "8px" }}> |
| 141 | + <strong>iOS Support Preview</strong> |
| 142 | + <br></br> |
| 143 | + Preview of upcoming iOS support for flutter-maplibre. |
| 144 | + </div> |
| 145 | + </div> |
| 146 | +</div> |
| 147 | + |
| 148 | +## Martin Tile Format (MLT) |
| 149 | + |
| 150 | +Exciting progress continues on the MapLibre Tile (MLT) format! |
| 151 | + |
| 152 | +- **C++ MLT Decoder Implementation:** As mentioned before, [@TimSylvester](http://github.com/TimSylvester) has been actively working on a C++ decoder implementation for MLT. Checkout the ongoing work in [this PR](https://github.com/maplibre/maplibre-tile-spec/pull/441). |
| 153 | +- **Rust based FastPFOR algorithm:** [@jjcfrancisco](http://github.com/jjcfrancisco) and [@nyurik](http://github.com/nyurik) have published a [Rust implementation](https://crates.io/crates/fastpfor) of the FastPFOR algorithm - which serves as the foundation of the MLT format. |
| 154 | + |
| 155 | +A dedicated meeting for MLT development updates takes place every second Monday of the month at **3:15 PM UTC**. The next meeting is scheduled for **March 10, 2025**. |
| 156 | + |
| 157 | +For ongoing updates, discussions, and collaboration, follow the **_#maplibre-tile-format_** Slack channel. |
| 158 | + |
| 159 | +## 🌟 Community Spotlight: Mapping Historical New York with Vector Beeswarm Dot Density |
| 160 | + |
| 161 | +The team at Stamen has introduced a fascinating mapping project using [maplibre-gl-js](https://maplibre.org/maplibre-gl-js/docs/), that visualizes historical New York using Vector Beeswarm Dot Density techniques. This approach beautifully showcases how data can be represented in a spatially meaningful and visually engaging way. |
| 162 | + |
| 163 | +Read more about the project here: [Vector Beeswarm Dot Density with Mapping Historical New York](https://stamen.com/vector-beeswarm-dot-density-with-mapping-historical-new-york/) |
| 164 | + |
| 165 | +<div |
| 166 | + style={{ |
| 167 | + display: "flex", |
| 168 | + justifyContent: "center", |
| 169 | + flexDirection: "column", |
| 170 | + alignItems: "center", |
| 171 | + }} |
| 172 | +> |
| 173 | + <Image |
| 174 | + src={stamen_ml} |
| 175 | + style={{ |
| 176 | + maxWidth: "550px", |
| 177 | + maxHeight: "550px", |
| 178 | + width: "100%", |
| 179 | + height: "auto", |
| 180 | + display: "inline-block", |
| 181 | + }} |
| 182 | + alt="Animated demo of the Vector Beeswarm Dot Density map.." |
| 183 | + /> |
| 184 | + <div |
| 185 | + style={{ |
| 186 | + fontSize: "0.9em", |
| 187 | + color: "#BEBEBE", |
| 188 | + marginTop: "8px", |
| 189 | + textAlign: "center", |
| 190 | + }} |
| 191 | + ></div> |
| 192 | +</div> |
| 193 | + |
| 194 | +📢 Have a cool MapLibre-powered project to share? [Let us know](https://github.com/maplibre/maplibre.github.io/issues/291) - we’d love to feature it in our next newsletter! A huge thank you to [Tobias Jordans](https://www.linkedin.com/in/tobiasjordans/) for inspiring this Community Spotlight section. We appreciate the idea and look forward to featuring more exciting projects from the community! |
| 195 | + |
| 196 | +## Monthly meetings |
| 197 | + |
| 198 | +We’re continuing our tradition of meeting on the second Wednesday of each month, and now we’re adding an additional session on the last Wednesday to accommodate eastern-friendly time zones. |
| 199 | + |
| 200 | +- MapLibre Navigation: **March 12, 2025 5:00–6:00 PM UTC** |
| 201 | +- MapLibre Native: **March 12, 2025 6:00–7:00 PM UTC** |
| 202 | +- MapLibre GL JS: **March 12, 2025 - 7:00–8:00 PM UTC** |
| 203 | + |
| 204 | +#### MapLibre Eastern Call (held on the last Wednesday of the month at an Asia/Oceania-friendly time) |
| 205 | + |
| 206 | +- March 26, 2025 - 9:00–10:00 AM UTC |
| 207 | + |
| 208 | +View meeting times in your time zone: https://notime.zone/OKPWfUR_vx2eP. |
| 209 | + |
| 210 | +All calls are open to everyone. Zoom links can be found in our MapLibre Slack. If you’re not a member, request an invite at [OpenStreetMap US Slack community](https://slack.openstreetmap.us/). We look forward to seeing you! |
0 commit comments