import { Circle, Polygon, Polyline, Popup, Tooltip } from 'react-leaflet'
import { Geocerca } from '@/types'
interface GeocercaLayerProps {
geocerca: Geocerca
editable?: boolean
onClick?: () => void
}
export default function GeocercaLayer({
geocerca,
editable = false,
onClick,
}: GeocercaLayerProps) {
const pathOptions = {
color: geocerca.color,
fillColor: geocerca.color,
fillOpacity: 0.2,
weight: 2,
}
const eventHandlers = {
click: () => onClick?.(),
}
// Circle geocerca
if (geocerca.tipo === 'circulo' && geocerca.centroLat && geocerca.centroLng && geocerca.radio) {
return (
{geocerca.nombre}
)
}
// Polygon geocerca
if (geocerca.tipo === 'poligono' && geocerca.vertices && geocerca.vertices.length > 2) {
const positions = geocerca.vertices.map((v) => [v.lat, v.lng] as [number, number])
return (
{geocerca.nombre}
)
}
// Route geocerca
if (geocerca.tipo === 'ruta' && geocerca.vertices && geocerca.vertices.length > 1) {
const positions = geocerca.vertices.map((v) => [v.lat, v.lng] as [number, number])
return (
{geocerca.nombre}
)
}
return null
}
// Popup content
function GeocercaPopup({ geocerca }: { geocerca: Geocerca }) {
return (
{geocerca.nombre}
{geocerca.descripcion && (
{geocerca.descripcion}
)}
Tipo:
{geocerca.tipo}
Accion:
{geocerca.accion}
{geocerca.velocidadMaxima && (
Vel. max:
{geocerca.velocidadMaxima} km/h
)}
{geocerca.tipo === 'circulo' && geocerca.radio && (
Radio:
{geocerca.radio} m
)}
)
}