use crate::{
VectorLayer, VectorTile, base::BaseVectorLayer, mapbox::vector_tile::MapboxVectorTile,
};
use alloc::{collections::BTreeMap, string::String};
#[derive(Debug, Default)]
pub struct BaseVectorTile {
pub layers: BTreeMap<String, BaseVectorLayer>,
}
impl BaseVectorTile {
pub fn add_layer(&mut self, layer: BaseVectorLayer) {
self.layers.insert(layer.name.clone(), layer);
}
}
impl From<&mut VectorTile> for BaseVectorTile {
fn from(vector_tile: &mut VectorTile) -> Self {
let mut tile = BaseVectorTile { layers: BTreeMap::new() };
for (name, layer) in vector_tile.layers.iter_mut() {
if let VectorLayer::Mapbox(layer) = layer {
tile.layers.insert(name.clone(), layer.into());
}
}
tile
}
}
impl From<&mut MapboxVectorTile> for BaseVectorTile {
fn from(vector_tile: &mut MapboxVectorTile) -> Self {
let mut tile = BaseVectorTile { layers: BTreeMap::new() };
for (name, layer) in vector_tile.layers.iter_mut() {
tile.layers.insert(name.clone(), layer.into());
}
tile
}
}