I’m wondering if it’s possible to switch off all Folium tiles that have been added to a Folium Map object. By default one tile should be selected, but could be displayed a blank background?
It’s an option that I thinkg could be useful to enhance the visualization of the entities that have been laid over the tiles.
Advertisement
Answer
- you can add tile layers to folium maps
- below code adds a blank tile layer then on my system 26 other candidate base maps
- finally
folium.map.LayerControl()allows layers to be selected including blank layer
import xyzservices.providers as xyz
import geopandas as gpd
import matplotlib.colors as colors
import folium
gdf = gpd.read_file(gpd.datasets.get_path("naturalearth_cities"))
gdf["Hemisphere"] = gdf["geometry"].apply(lambda x: "Norte" if x.y > 0 else "Sur")
# create a map
m = gdf.explore(
column="Hemisphere",
name="Cities",
cmap=colors.ListedColormap(["#D94325", "#5CD925"]),
tiles=None,
)
def filter_provider(p):
if p.requires_token():
return False
if (
"Stadia" in p.name
or "CyclOSM" in p.name
or "NASAGIBS" in p.name
or "BlackAndWhite" in p.name
):
return False
if hasattr(p, "variant"):
return False
if hasattr(p, "ext"):
return False
if hasattr(p, "status") and p.status == "broken":
return False
return True
# empty tile layer
folium.TileLayer("", name="None", attr="blank").add_to(m)
# add multiple candidate base layers / tiles to folium map
for name, args in xyz.filter(function=filter_provider).flatten().items():
folium.TileLayer(args["url"], name=name, attr=args["attribution"]).add_to(m)
# add control to be able to select base map
m.add_child(folium.map.LayerControl())
