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.
folium.map.LayerControl()
allows layers to be selected including blank layerimport 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())