Documentación / Configuración / React / Cesium

Configurar Cesium

Pasos para usar Cesium en la web desde MapConductor. Seleccione esto cuando desee mostrar un globo terráqueo real en 3D. Se requiere una configuración para incluir los activos estáticos de cesium en la compilación.

PACKAGE
react-for-cesium
API KEY
No es necesario
CSS
Necesario
3D CAMERA
Real

Antes de empezar

Node.js 18 o superior
Configuración de compilación capaz de entregar activos estáticos (por ejemplo, Vite)
STEP 01

Instalar

cesium está incluido en el paquete.

terminalnpm
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
            @mapconductor/react-for-cesium
STEP 02

Cargar hoja de estilos

Se carga una sola vez en el punto de entrada de la aplicación. Si olvida esto, la posición del mapa y la apariencia de los controles se romperán.

main.tsxTypeScript
import '@mapconductor/react-for-cesium/style.css';
STEP 03

Entregar activos estáticos de Cesium

Cesium carga archivos estáticos como Workers, Assets, Widgets y ThirdParty en tiempo de ejecución. Debe copiarlos en la ruta de implementación e indicar a Cesium su ubicación mediante `CESIUM_BASE_URL`. La aplicación de ejemplo (`examples/basic/vite.config.ts`) es un ejemplo práctico de esta configuración.

vite.config.tsTypeScript
// Copy node_modules/cesium/Build/Cesium/{Workers,Assets,Widgets,ThirdParty}
// into your output directory, then tell Cesium where they live:
define: {
  CESIUM_BASE_URL: JSON.stringify('/cesiumStatic/'),
}

VERIFICAR

Lo que deberías ver

Si aparece el globo terráqueo, ha terminado.

CesiumMap.tsxTypeScript · React
import { useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { CesiumDesign, CesiumMapView, useCesiumMapViewState } from '@mapconductor/react-for-cesium';
import '@mapconductor/react-for-cesium/style.css';

const TOKYO = createGeoPoint({ latitude: 35.6812, longitude: 139.7671 });

export function CesiumMap() {
  const state = useCesiumMapViewState({
    mapDesignType: CesiumDesign.Default,
    cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
  });
  const [markerState] = useState(() => createMarkerState({ id: 'tokyo', position: TOKYO }));

  return (
    <CesiumMapView state={state} style={{ height: 480 }}>
      <Marker state={markerState} />
    </CesiumMapView>
  );
}

Diseños de mapa

CesiumDesign es una constante que envuelve el ImageryProvider de Cesium.

CesiumDesign
Notes
Default
Mosaicos de OpenStreetMap. Con atribución
None
Sin capa de imagen

Solución de problemas

Aparecen errores 404 de Worker o assets en la consola

  • Verifique la copia de activos estáticos y la configuración de `CESIUM_BASE_URL`. Cesium las buscará en tiempo de ejecución.

El paquete es grande

  • cesium es una biblioteca grande. Extraiga solo las pantallas que requieren visualización 3D a una importación dinámica.

El mapa se inicializa dos veces durante el desarrollo

  • React StrictMode ejecuta los efectos dos veces. Como cada proveedor detecta esto y descarta uno, no es necesario eliminar StrictMode.

Siguiente

Dado que Cesium tiene una cámara 3D real, la inclinación y el rumbo se reflejan directamente. El comportamiento es diferente al pseudo-3D de Leaflet u OpenLayers.