ArcGIS का सेटअप
वेब पर ArcGIS को MapConductor से उपयोग करने की प्रक्रिया यहाँ दी गई है। @arcgis/core पैकेज में शामिल है, और Esri की थीम CSS भी पैकेज द्वारा लोड की जाती है।
शुरू करने से पहले
इंस्टॉल करें
@arcgis/core पैकेज में शामिल है। Esri की थीम CSS भी व्यू द्वारा लोड की जाती है, इसलिए आपको खुद import करने की आवश्यकता नहीं है।
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
@mapconductor/react-for-arcgisAPI कुंजी को स्टेट हुक में पास करें
कुंजी को व्यू component के props में नहीं, बल्कि स्टेट हुक में पास किया जाता है। ऐसा इसलिए किया जाता है ताकि यह टेस्ट लॉग और स्नैपशॉट में न मिले।
const state = useArcGISViewState({
apiKey: import.meta.env.VITE_ARCGIS_API_KEY,
mapDesignType: ArcGISDesign.Streets,
cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
});2D और 3D का उपयोग करें
ArcGISMapView 3D सीन व्यू है, ArcGISMapView2D 2D मैप व्यू है। दोनों एक ही स्टेट ऑब्जेक्ट साझा करते हैं, इसलिए आप रनटाइम पर उन्हें स्विच कर सकते हैं।
जाँच
आपको क्या दिखना चाहिए
ArcGIS का मैप दिखाई देने पर पूर्ण हो गया।
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 के बेसमैप का समर्थन करता है। यहाँ कुछ ही दिए गए हैं।
समस्या निवारण
मैप नहीं दिख रहा
- जांचें कि कुंजी स्टेट हुक में पास हुई है या नहीं।
- जांचें कि आवश्यक ArcGIS सेवाएँ कुंजी से सक्षम हैं या नहीं।
बंडल बड़ा है
- @arcgis/core एक बड़ी लाइब्रेरी है। यदि आप केवल ArcGIS वाली स्क्रीन को डायनामिक import में अलग करते हैं, तो आप प्रारंभिक लोड को कम कर सकते हैं।
प्रोवाइडर बदलने पर हुक क्रम त्रुटि आती है
- React हुक कॉल का क्रम नहीं बदल सकता। प्रत्येक प्रोवाइडर के लिए एक छोटा कंपोनेंट बनाएँ, और उसके अंदर उस प्रोवाइडर के हुक को कॉल करें। सैंपल ऐप का providers/ डायरेक्टरी इसी संरचना का है।
आगे
ArcGIS की शक्ति यह है कि यह GIS संपत्तियों को यथावत संभाल सकता है। जहाँ कॉमन API काफी नहीं है, वहाँ MapViewHolder से नेटिव व्यू निकालकर सीधे हेरफेर किया जा सकता है।