Ejemplo de código
import { useMemo, useState } from 'react';
import {
createGeoPoint,
createMapCameraPosition,
createMarkerState,
createPolygonState,
type GeoPoint,
} from '@mapconductor/js-sdk-core';
import { Markers, Polygon } from '@mapconductor/js-sdk-react';
import { MapLibreDesign, MapLibreMapView2D, useMapLibreViewState } from '@mapconductor/react-for-maplibre';
// (1) Crear el mapa
const initialCamera = createMapCameraPosition({
position: createGeoPoint({ latitude: 35.6812, longitude: 139.7671 }),
zoom: 12,
});
const mapViewState = useMapLibreViewState({
mapDesignType: MapLibreDesign.OsmBrightJa,
cameraPosition: initialCamera,
});
// (2) Preparar los datos y el estado de interacción
const [vertices, setVertices] = useState<GeoPoint[]>(initialVertices);
const polygonState = useMemo(() => createPolygonState({
id: 'area',
points: vertices,
fillColor: 'rgba(37, 99, 235, 0.3)',
strokeColor: '#2563eb',
}), [vertices]);
const vertexMarkers = vertices.map((position, index) => createMarkerState({
id: `vertex-${index}`, position, draggable: true,
}));
// (3) Renderizar el mapa y sus capas
<MapLibreMapView2D state={mapViewState}>
<Polygon state={polygonState} />
<Markers states={vertexMarkers} />
</MapLibreMapView2D>
Cómo funciona el código
Dibuja un polígono relleno y usa marcadores para que cada vértice sea visible e interactivo.
El arreglo vertices es estado de React, y useMemo reconstruye el PolygonState —un relleno azul translúcido con un trazo sólido— cada vez que un vértice se mueve.
Cada vértice se dibuja como un marcador arrastrable, de modo que el contorno del polígono se puede editar punto por punto.