Commit 271643b
authored
feat: render PMTiles URLs as external native layers (#81)
* feat: render PMTiles URLs as external native layers
Adds the pmtiles dependency and registers the pmtiles:// protocol so
PMTiles vector and raster sources can be added directly to MapLibre.
Vector sources fan out into fill, line, and circle layers per source
layer, while raster sources render through a single raster layer.
* refactor: improve XYZ tile URL handling and add async URL resolution
Updated the XYZ tile URL rendering to bypass IPC for better performance in Tauri, allowing direct use of HTTPS image tiles. Introduced asynchronous functions for fetching and resolving URLs, with improved error handling and timeout settings for remote tile requests. This enhances responsiveness and reliability when dealing with external tile sources.
* Address Copilot review feedback
- Skip rendering when a PMTiles vector source has no known source layer
instead of adding an invalid vector fill layer with no `source-layer`,
which MapLibre would reject at runtime.
- URL-encode the source-layer part of PMTiles vector layer IDs to match
the MBTiles/vector-tile convention and keep IDs stable and comparable.
- Register and add archives through a single shared PMTiles Protocol
instance stored on globalThis, and let protocol-registration errors
surface instead of being silently swallowed.1 parent 873e29a commit 271643b
5 files changed
Lines changed: 301 additions & 10 deletions
File tree
- apps/geolibre-desktop
- src-tauri/src
- src/lib
- packages/map
- src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
27 | 30 | | |
28 | 31 | | |
29 | 32 | | |
| |||
82 | 85 | | |
83 | 86 | | |
84 | 87 | | |
85 | | - | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
86 | 95 | | |
87 | 96 | | |
88 | 97 | | |
89 | 98 | | |
90 | | - | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
91 | 107 | | |
92 | 108 | | |
93 | 109 | | |
| |||
103 | 119 | | |
104 | 120 | | |
105 | 121 | | |
106 | | - | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
107 | 129 | | |
108 | 130 | | |
109 | 131 | | |
110 | 132 | | |
111 | 133 | | |
112 | | - | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
113 | 137 | | |
114 | 138 | | |
115 | 139 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
171 | 171 | | |
172 | 172 | | |
173 | 173 | | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
180 | 178 | | |
181 | 179 | | |
182 | 180 | | |
| |||
208 | 206 | | |
209 | 207 | | |
210 | 208 | | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
211 | 216 | | |
212 | 217 | | |
213 | 218 | | |
214 | 219 | | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
215 | 227 | | |
216 | 228 | | |
217 | 229 | | |
| |||
229 | 241 | | |
230 | 242 | | |
231 | 243 | | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
232 | 248 | | |
233 | 249 | | |
234 | 250 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
| |||
0 commit comments