Doku / Einrichtung / React / ArcGIS

ArcGIS einrichten

So verwenden Sie ArcGIS im Web mit MapConductor. @arcgis/core ist im Paket enthalten und Esri-Theme-CSS wird vom Paket geladen.

PACKAGE
react-for-arcgis
API KEY
Erforderlich
CSS
Automatisch
REACT NATIVE
Vorhanden
Derselbe Anbieter, andere PlattformenAndroidiOS

Bevor Sie beginnen

Node.js 18 oder höher
API-Schlüssel für die ArcGIS Location Platform
STEP 01

Installieren

@arcgis/core ist im Paket enthalten. Das Esri-Theme-CSS wird auch auf der Ansichtsseite geladen, daher müssen Sie es nicht selbst importieren.

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

API-Schlüssel an einen Zustands-Hook übergeben

Übergeben Sie den Schlüssel an einen Zustands-Hook, nicht an die props der Ansichts-Komponente. Andernfalls würde er in Testprotokollen und Snapshots erscheinen.

ArcGISMap.tsxTypeScript · React
const state = useArcGISViewState({
  apiKey: import.meta.env.VITE_ARCGIS_API_KEY,
  mapDesignType: ArcGISDesign.Streets,
  cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
});
ACHTUNG
Übergeben Sie den Schlüssel aus einer Umgebungsvariable zur Buildzeit (bei Vite z. B. import.meta.env.VITE_*) und legen Sie ihn nicht in die Quellcodeverwaltung. Da er an das Frontend übergeben wird, müssen Sie unbedingt Referrer-Einschränkungen und Domäneneinschränkungen festlegen, um Schäden zu vermeiden, falls der Schlüssel öffentlich wird.
STEP 03

Zwischen 2D und 3D unterscheiden

ArcGISMapView ist eine 3D-Szenenansicht, ArcGISMapView2D eine 2D-Kartenansicht. Beide teilen sich dasselbe Zustandsobjekt, sodass sie zur Laufzeit umgeschaltet werden können.

PRÜFEN

Was Sie sehen sollten

Fertig, wenn die ArcGIS-Karte angezeigt wird.

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>
  );
}

Kartendesigns

ArcGISDesign unterstützt Esri-Basiskarten. Dies ist eine Auswahl.

ArcGISDesign
Notes
Streets / StreetsNight / StreetsRelief
Straßenkarte und Varianten
Imagery / ImageryLabels
Satellitenbild mit Beschriftung
Topographic / Terrain
Topografische Karte
LightGray / DarkGray
Für eigene Datenunterlagen
Navigation / NavigationNight
Für Navigation
Oceans / ChartedTerritory / Nova
Weitere thematische Stile

Fehlerbehebung

Karte wird nicht angezeigt

  • Prüfen Sie, ob der Schlüssel an einen Zustands-Hook übergeben wurde.
  • Prüfen Sie, ob die erforderlichen ArcGIS-Services für den Schlüssel aktiviert sind.

Bündel ist groß

  • @arcgis/core ist eine große Bibliothek. Wenn Sie nur die Bildschirme, die ArcGIS verwenden, in einen dynamischen import auslagern, reduzieren Sie die anfängliche Ladezeit.

Beim Wechseln des Providers tritt ein Fehler in der Hook-Reihenfolge auf

  • React kann die Reihenfolge von Hook-Aufrufen nicht ändern. Erstellen Sie für jeden Provider eine kleine Komponente und rufen Sie darin die Hooks dieses Providers auf. Das providers/-Verzeichnis der Beispiel-App hat genau diesen Aufbau.

Weiter

ArcGIS kann GIS-Assets direkt verarbeiten. Wo die gemeinsame API nicht ausreicht, können Sie die native Ansicht aus MapViewHolder entnehmen und direkt steuern.