use serde::{Deserialize, Serialize};
use crate::types::{LatLng, Point};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MapClickEvent {
pub latlng: LatLng,
pub point: Point,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MarkerClickEvent {
pub marker_id: String,
pub latlng: LatLng,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MapMoveEvent {
pub center: LatLng,
pub zoom: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LayerClickEvent {
pub layer_id: String,
pub feature_id: Option<i64>,
pub properties: serde_json::Value,
pub latlng: LatLng,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LayerHoverEvent {
pub layer_id: String,
pub feature_id: Option<i64>,
pub properties: Option<serde_json::Value>,
pub latlng: LatLng,
pub cursor_x: f64,
pub cursor_y: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
#[allow(dead_code)] pub enum MapEvent {
#[serde(rename = "click")]
Click(MapClickEvent),
#[serde(rename = "marker_click")]
MarkerClick(MarkerClickEvent),
#[serde(rename = "move")]
Move(MapMoveEvent),
#[serde(rename = "layer_click")]
LayerClick(LayerClickEvent),
#[serde(rename = "layer_hover")]
LayerHover(LayerHoverEvent),
}