Documentación / Configuración / React / ArcGIS

Configurar ArcGIS

Instrucciones para usar ArcGIS en la web desde MapConductor. @arcgis/core está incluido en el paquete y el CSS de temas de Esri también lo carga el paquete.

PACKAGE
react-for-arcgis
API KEY
Obligatorio
CSS
Automático
REACT NATIVE
El mismo proveedor, otras plataformasAndroidiOS

Antes de empezar

Node.js 18 o superior
Clave de API de ArcGIS Location Platform
STEP 01

Instalar

@arcgis/core está incluido en el paquete. El CSS de temas de Esri también lo carga la vista, por lo que no necesita importarlo usted mismo.

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

Pasar la clave de API a un enlace de estado

Pase la clave a un enlace de estado, no a los props del componente de vista. Si se coloca en props, se mezcla en los registros y capturas de las pruebas.

ArcGISMap.tsxTypeScript · React
const state = useArcGISViewState({
  apiKey: import.meta.env.VITE_ARCGIS_API_KEY,
  mapDesignType: ArcGISDesign.Streets,
  cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
});
PRECAUCIÓN
Pase la clave desde una variable de entorno en tiempo de compilación (en Vite, por ejemplo import.meta.env.VITE_*) y no la incluya en el control de código fuente. Dado que pasa al frontend, asegúrese de aplicar restricciones de referencia y de dominio para evitar daños si se hace pública.
STEP 03

Usar 2D y 3D según corresponda

ArcGISMapView es una vista de escena 3D, ArcGISMapView2D es una vista de mapa 2D. Ambos comparten el mismo objeto de estado, por lo que se pueden alternar en tiempo de ejecución.

VERIFICAR

Lo que deberías ver

Ha terminado cuando aparece el mapa de ArcGIS.

ArcGISMap.tsxTypeScript · React
import { useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { ArcGISDesign, ArcGISMapView2D, useArcGISViewState } from '@mapconductor/react-for-arcgis';

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

export function ArcGISMap() {
  const state = useArcGISViewState({
    apiKey: import.meta.env.VITE_ARCGIS_API_KEY,
    mapDesignType: ArcGISDesign.Streets,
    cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
  });
  const [markerState] = useState(() => createMarkerState({ id: 'tokyo', position: TOKYO }));

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

Diseños de mapa

ArcGISDesign es compatible con los mapas base de Esri. Aquí solo se muestran algunos.

ArcGISDesign
Notes
Streets / StreetsNight / StreetsRelief
Mapa de calles y sus variantes
Imagery / ImageryLabels
Imagen satelital con etiquetas
Topographic / Terrain
Mapa topográfico
LightGray / DarkGray
Para capas base de datos
Navigation / NavigationNight
Para navegación
Oceans / ChartedTerritory / Nova
Otros estilos temáticos

Solución de problemas

El mapa no aparece

  • Compruebe si la clave se pasó a un enlace de estado.
  • Compruebe si los servicios de ArcGIS necesarios están habilitados para la clave.

El paquete es grande

  • @arcgis/core es una biblioteca grande. Si extrae solo las pantallas que usan ArcGIS en un import dinámico, puede reducir la carga inicial.

Error de orden de enlaces al cambiar de proveedor

  • React no puede cambiar el orden de las llamadas a enlaces. Cree un componente pequeño para cada proveedor y llame a los enlaces de ese proveedor dentro de él. El directorio providers/ de la aplicación de ejemplo sigue esta estructura.

Siguiente

ArcGIS puede manejar activos de GIS directamente. Cuando la API común no es suficiente, puede obtener la vista nativa desde MapViewHolder y manipularla directamente.