MapConductor React SDK Samples

Iconos de marcadores | MapLibre | MapConductor React SDK

Ejemplo de Iconos de marcadores de MapConductor React SDK con MapLibre.

Este ejemplo interactivo muestra Iconos de marcadores mediante la abstracción de MapConductor sobre MapLibre.

Ejemplo de código

import { useMemo, useState } from 'react';
import {
  createGeoPoint,
  createMapCameraPosition,
  createMarkerState,
  type MarkerState,
} from '@mapconductor/js-sdk-core';
import { InfoBubble, Markers } 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 [selected, setSelected] = useState<MarkerState | null>(null);
const markers = useMemo(() => markerData.map(item => createMarkerState({
  id: item.id,
  position: createGeoPoint(item.position),
  icon: item.icon,
  onClick: markerState => setSelected(markerState),
})), [markerData]);


// (3) Renderizar el mapa y sus capas


<MapLibreMapView2D state={mapViewState}>
  <Markers states={markers} />
  {selected && <InfoBubble marker={selected}>{selected.extra}</InfoBubble>}
</MapLibreMapView2D>

Cómo funciona el código

Compone marcadores con distintos tipos de iconos y abre un globo cuando se selecciona un marcador.

El arreglo markers se memoriza a partir de markerData, y cada createMarkerState lleva su propio icon más un onClick que registra el MarkerState seleccionado.

El <Markers> por lotes dibuja juntas todas las variantes de icono, y el InfoBubble muestra selected.extra solo mientras un marcador permanece activo.