Skip to main content

dioxus_maplibre/handle/
feature_state.rs

1//! Feature-state MapHandle methods.
2#![allow(clippy::needless_pass_by_value)]
3
4use super::MapHandle;
5use crate::options::FeatureIdentifier;
6
7impl MapHandle {
8    /// Set feature state for styling (hover effects, selection, etc.)
9    pub fn set_feature_state(&self, feature: &FeatureIdentifier, state: serde_json::Value) {
10        self.fire_and_forget(|| {
11            let json = serde_json::to_string(&state).unwrap_or_default();
12            crate::interop::set_feature_state_js(
13                &self.map_id,
14                &feature.source,
15                feature.id,
16                feature.source_layer.as_deref(),
17                &json,
18            )
19        });
20    }
21
22    /// Remove all feature state
23    pub fn remove_feature_state(&self, feature: &FeatureIdentifier) {
24        self.fire_and_forget(|| {
25            crate::interop::remove_feature_state_js(
26                &self.map_id,
27                &feature.source,
28                feature.id,
29                feature.source_layer.as_deref(),
30            )
31        });
32    }
33}