Folium plugin to render vector tile layers using Leaflet.VectorTileLayer
MIT License
Bot releases are hidden (Show)
Published by iwpnd over 1 year ago
Follow up on folium-vectorgrid that wraps
Leaflet.VectorTileLayer to render
Mapbox vector tiles in folium maps.
Other than Leaflet.VectorGrid, Leaflet.VectorTileLayer allows
to "overzoom" and "underzoom".
Even if the tiling provider only provides map tiles for zoom level 5 through 12,
Leaflet.VectorTileLayer utilizes
data from these upper and lower bounds to render tiles beyond
zoom level 12 and 5 respectively.
Install Poetry.
poetry add git+https://github.com/iwpnd/folium-vectortilelayer.git
git clone https://github.com/iwpnd/folium-vectortilelayer.git
poetry install
poe test # or poetry run pytest .
from folium_vectortilelayer import VectorTileLayer
import folium
url = "https://free.tilehosting.com/data/v3/{z}/{x}/{y}.pbf?token=my_token"
m = folium.Map()
options = {
"layers": ["my_layer"], # define layer to be shown
# min zoom of your map,
# if minZoom < minDetailZoom features in minDetailZoom level are used
# for minDetailZoom to minZoom
"minZoom": 8,
# max zoom of your map,
# if maxZoom > maxDetailZoom features in maxDetailZoom level are used
# for maxDetailZoom to maxZoom
"maxZoom": 18,
# min zoom level provided by source
"minDetailZoom": 10,
# max zoom level provided by source
"maxDetailZoom": 13,
"vectorTileLayerStyles": {
"my_layer":{
"fill": True,
"weight": 1,
"fillColor": 'green',
"color": 'black',
"fillOpacity":0.6,
"opacity":0.6
},
}
}
vc = VectorTileLayer(url, "folium_layer_name", options)
m.add_child(vc)
m
Or with conditional styling
import folium
from folium_vectortilelayer import VectorTileLayer
m = folium.Map()
url = "https://free.tilehosting.com/data/v3/{z}/{x}/{y}.pbf?token=my_token"
options = '''{
"layers": ["my_layer"],
"vectorTileLayerStyles": {
"my_layer": function(f) {
if (f.type === 'parks') {
return {
"fill": true,
"weight": 1,
"fillColor": 'green',
"color": 'black',
"fillOpacity":0.6,
"opacity":0.6
};
}
if (f.type === 'water') {
return {
"fill": true,
"weight": 1,
"fillColor": 'purple',
"color": 'black',
"fillOpacity":0.6,
"opacity":0.6
};
}
}
}
}'''
VectorTileLayer(url,"layer_name",options).add_to(m)
m
Distributed under the MIT License. See LICENSE
for more information.
Benjamin Ramser - @imwithpanda - [email protected]
Project Link: https://github.com/iwpnd/folium-vector