दस्तावेज़ / सेटअप / React / ArcGIS

ArcGIS का सेटअप

वेब पर ArcGIS को MapConductor से उपयोग करने की प्रक्रिया यहाँ दी गई है। @arcgis/core पैकेज में शामिल है, और Esri की थीम CSS भी पैकेज द्वारा लोड की जाती है।

PACKAGE
react-for-arcgis
API KEY
आवश्यक
CSS
स्वचालित
REACT NATIVE
है
वही प्रोवाइडर, दूसरे प्लेटफ़ॉर्मAndroidiOS

शुरू करने से पहले

Node.js 18 या उच्चतर
ArcGIS Location Platform की API कुंजी
STEP 01

इंस्टॉल करें

@arcgis/core पैकेज में शामिल है। Esri की थीम CSS भी व्यू द्वारा लोड की जाती है, इसलिए आपको खुद import करने की आवश्यकता नहीं है।

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

API कुंजी को स्टेट हुक में पास करें

कुंजी को व्यू component के props में नहीं, बल्कि स्टेट हुक में पास किया जाता है। ऐसा इसलिए किया जाता है ताकि यह टेस्ट लॉग और स्नैपशॉट में न मिले।

ArcGISMap.tsxTypeScript · React
const state = useArcGISViewState({
  apiKey: import.meta.env.VITE_ARCGIS_API_KEY,
  mapDesignType: ArcGISDesign.Streets,
  cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
});
सावधानी
कुंजी को बिल्ड समय के एन्वायरनमेंट वैरिएबल (Vite है तो import.meta.env.VITE_*) से पास करें, और इसे सोर्स कंट्रोल में न रखें। जब तक यह फ्रंटएंड तक पहुँचता है, रेफरर प्रतिबंध या डोमेन प्रतिबंध लगाकर यह सुनिश्चित करें कि इसके सार्वजनिक होने पर कोई नुकसान न हो।
STEP 03

2D और 3D का उपयोग करें

ArcGISMapView 3D सीन व्यू है, ArcGISMapView2D 2D मैप व्यू है। दोनों एक ही स्टेट ऑब्जेक्ट साझा करते हैं, इसलिए आप रनटाइम पर उन्हें स्विच कर सकते हैं।

जाँच

आपको क्या दिखना चाहिए

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

मैप डिज़ाइन

ArcGISDesign Esri के बेसमैप का समर्थन करता है। यहाँ कुछ ही दिए गए हैं।

ArcGISDesign
Notes
Streets / StreetsNight / StreetsRelief
रोड मैप और उसके वैरिएंट
Imagery / ImageryLabels
सैटेलाइट इमेज और लेबल के साथ
Topographic / Terrain
टोपोग्राफिक मैप
LightGray / DarkGray
डेटा रखने के लिए बेस लेयर के लिए
Navigation / NavigationNight
नेविगेशन के लिए
Oceans / ChartedTerritory / Nova
अन्य थीम-आधारित स्टाइल

समस्या निवारण

मैप नहीं दिख रहा

  • जांचें कि कुंजी स्टेट हुक में पास हुई है या नहीं।
  • जांचें कि आवश्यक ArcGIS सेवाएँ कुंजी से सक्षम हैं या नहीं।

बंडल बड़ा है

  • @arcgis/core एक बड़ी लाइब्रेरी है। यदि आप केवल ArcGIS वाली स्क्रीन को डायनामिक import में अलग करते हैं, तो आप प्रारंभिक लोड को कम कर सकते हैं।

प्रोवाइडर बदलने पर हुक क्रम त्रुटि आती है

  • React हुक कॉल का क्रम नहीं बदल सकता। प्रत्येक प्रोवाइडर के लिए एक छोटा कंपोनेंट बनाएँ, और उसके अंदर उस प्रोवाइडर के हुक को कॉल करें। सैंपल ऐप का providers/ डायरेक्टरी इसी संरचना का है।

आगे

ArcGIS की शक्ति यह है कि यह GIS संपत्तियों को यथावत संभाल सकता है। जहाँ कॉमन API काफी नहीं है, वहाँ MapViewHolder से नेटिव व्यू निकालकर सीधे हेरफेर किया जा सकता है।