mirror of
https://github.com/maplibre/maplibre-rs.git
synced 2025-12-08 19:05:57 +00:00
Tile source fixes (#236)
* Fix a bug with empty layers * Switch to XYZ * Fix tile url * Execute apt-get update
This commit is contained in:
parent
f6fc816761
commit
f82ac0e8a3
6
.github/actions/install-driver/action.yml
vendored
6
.github/actions/install-driver/action.yml
vendored
@ -8,12 +8,10 @@ runs:
|
||||
# On Ubuntu 22.04 (currently used) using the PPA introduces SEGVs.
|
||||
#- name: Use oibaf PPA for drivers
|
||||
# shell: bash
|
||||
# run: |
|
||||
# sudo apt-get update -y -qq
|
||||
# sudo add-apt-repository ppa:oibaf/graphics-drivers -y
|
||||
# run: sudo apt-get update -y -qq && sudo add-apt-repository ppa:oibaf/graphics-drivers -y
|
||||
- name: Install Mesa Dependencies
|
||||
shell: bash
|
||||
run: sudo apt-get install -y libegl1-mesa libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers
|
||||
run: sudo apt-get update -y -qq && sudo apt-get install -y libegl1-mesa libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers
|
||||
- name: Install wgpu-info
|
||||
shell: bash
|
||||
# Rev is for 0.14.1: https://github.com/gfx-rs/wgpu/tree/v0.14.1
|
||||
|
||||
@ -12,7 +12,7 @@ runs:
|
||||
if: runner.os == 'Linux'
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get install -y \
|
||||
sudo apt-get update -y -qq && sudo apt-get install -y \
|
||||
protobuf-compiler \
|
||||
libwayland-dev libxkbcommon-dev # Required for winit
|
||||
- name: Install System Dependencies (macOS)
|
||||
|
||||
@ -68,11 +68,11 @@ where
|
||||
}
|
||||
|
||||
pub async fn fetch(&self, coords: &WorldTileCoords) -> Result<Vec<u8>, SourceFetchError> {
|
||||
let tile_coords = coords.into_tile(TileAddressingScheme::TMS).unwrap();
|
||||
let tile_coords = coords.into_tile(TileAddressingScheme::XYZ).unwrap();
|
||||
self.inner_client
|
||||
.fetch(
|
||||
format!(
|
||||
"https://maps.tuerantuer.org/europe_germany/{z}/{x}/{y}.pbf",
|
||||
"https://maps.tuerantuer.org/europe_germany/{z}/{x}/{y}",
|
||||
x = tile_coords.x,
|
||||
y = tile_coords.y,
|
||||
z = tile_coords.z
|
||||
|
||||
@ -38,6 +38,8 @@ pub trait LayerTessellated: Send {
|
||||
|
||||
fn coords(&self) -> WorldTileCoords;
|
||||
|
||||
fn is_empty(&self) -> bool;
|
||||
|
||||
fn to_stored_layer(self) -> StoredLayer;
|
||||
}
|
||||
|
||||
@ -119,6 +121,10 @@ impl LayerTessellated for DefaultLayerTesselated {
|
||||
self.coords
|
||||
}
|
||||
|
||||
fn is_empty(&self) -> bool {
|
||||
self.buffer.usable_indices == 0
|
||||
}
|
||||
|
||||
fn to_stored_layer(self) -> StoredLayer {
|
||||
StoredLayer::TessellatedLayer {
|
||||
coords: self.coords,
|
||||
|
||||
@ -143,11 +143,16 @@ impl RenderCommand<(IndexEntry, TileShape)> for DrawTile {
|
||||
&entry.coords
|
||||
);
|
||||
|
||||
let index_range = entry.indices_buffer_range();
|
||||
|
||||
if index_range.is_empty() {
|
||||
tracing::error!("Tried to draw a vector tile without any vertices");
|
||||
return RenderCommandResult::Failure;
|
||||
}
|
||||
|
||||
pass.set_stencil_reference(reference);
|
||||
pass.set_index_buffer(
|
||||
buffer_pool.indices().slice(entry.indices_buffer_range()),
|
||||
INDEX_FORMAT,
|
||||
);
|
||||
|
||||
pass.set_index_buffer(buffer_pool.indices().slice(index_range), INDEX_FORMAT);
|
||||
pass.set_vertex_buffer(
|
||||
0,
|
||||
buffer_pool.vertices().slice(entry.vertices_buffer_range()),
|
||||
|
||||
@ -64,6 +64,11 @@ impl<E: Environment> Stage for PopulateTileStore<E> {
|
||||
tile_repository.put_layer(layer);
|
||||
}
|
||||
Message::LayerTessellated(message) => {
|
||||
// TODO: Is it fine to ignore layers without any vertices?
|
||||
if message.is_empty() {
|
||||
continue;
|
||||
}
|
||||
|
||||
let layer: StoredLayer = message.to_stored_layer();
|
||||
|
||||
tracing::debug!(
|
||||
|
||||
@ -190,6 +190,11 @@ impl LayerTessellated for FlatBufferTransferable {
|
||||
data.coords().unwrap().into()
|
||||
}
|
||||
|
||||
fn is_empty(&self) -> bool {
|
||||
let data = unsafe { root_as_flat_layer_tessellated_unchecked(&self.data[self.start..]) };
|
||||
data.usable_indices() == 0
|
||||
}
|
||||
|
||||
fn to_stored_layer(self) -> StoredLayer {
|
||||
let data = unsafe { root_as_flat_layer_tessellated_unchecked(&self.data[self.start..]) };
|
||||
let vertices = data
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user