Feature Query & Filter¶
This notebook demonstrates how to programmatically filter layers and query visible features on MapLibre maps.
In [ ]:
Copied!
# %pip install anymap-ts
# %pip install anymap-ts
Load GeoJSON Data¶
In [ ]:
Copied!
from anymap_ts import Map
m = Map(center=[-98.5, 39.8], zoom=3)
m.add_geojson(
"https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_110m_admin_0_countries.geojson",
name="countries",
layer_type="fill",
paint={
"fill-color": "#627BC1",
"fill-opacity": 0.5,
"fill-outline-color": "#333",
},
)
m
from anymap_ts import Map
m = Map(center=[-98.5, 39.8], zoom=3)
m.add_geojson(
"https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_110m_admin_0_countries.geojson",
name="countries",
layer_type="fill",
paint={
"fill-color": "#627BC1",
"fill-opacity": 0.5,
"fill-outline-color": "#333",
},
)
m
Apply a Filter¶
Show only countries with population greater than 100 million.
In [ ]:
Copied!
m.set_filter("countries", [">", ["get", "pop_est"], 100000000])
m.set_filter("countries", [">", ["get", "pop_est"], 100000000])
Change Filter¶
Show only European countries.
In [ ]:
Copied!
m.set_filter("countries", ["==", ["get", "continent"], "Europe"])
m.set_filter("countries", ["==", ["get", "continent"], "Europe"])
Clear Filter¶
Pass None to clear the filter and show all features.
In [ ]:
Copied!
m.set_filter("countries", None)
m.set_filter("countries", None)
Query Rendered Features¶
Query features currently visible in the viewport.
In [ ]:
Copied!
import time
m.query_rendered_features(layers=["countries"])
time.sleep(1) # Wait for async response
features = m.queried_features
print(f"Number of features: {len(features.get('features', []))}")
import time
m.query_rendered_features(layers=["countries"])
time.sleep(1) # Wait for async response
features = m.queried_features
print(f"Number of features: {len(features.get('features', []))}")
Query with Filter Expression¶
Query only features matching a filter.
In [ ]:
Copied!
m.query_rendered_features(
layers=["countries"],
filter_expression=["==", ["get", "continent"], "Africa"],
)
time.sleep(1)
features = m.queried_features
print(f"African countries in viewport: {len(features.get('features', []))}")
for f in features.get("features", [])[:5]:
print(f" - {f.get('properties', {}).get('name', 'Unknown')}")
m.query_rendered_features(
layers=["countries"],
filter_expression=["==", ["get", "continent"], "Africa"],
)
time.sleep(1)
features = m.queried_features
print(f"African countries in viewport: {len(features.get('features', []))}")
for f in features.get("features", [])[:5]:
print(f" - {f.get('properties', {}).get('name', 'Unknown')}")