Folium plugin to render vector tile layers using Leaflet.VectorTileLayer
MIT License
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
pip install folium-vectortilelayer
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