Cesium का सेटअप
MapConductor से Web पर Cesium का उपयोग करने की प्रक्रिया है। इसे तब चुनें जब आप एक वास्तविक ग्लोब के रूप में 3D प्रदर्शन चाहते हैं। बिल्ड में `cesium` की स्थैतिक संपत्तियों (static assets) को शामिल करने की सेटिंग आवश्यक है।
शुरू करने से पहले
इंस्टॉल करें
cesium पैकेज में शामिल है।
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
@mapconductor/react-for-cesiumस्टाइलशीट लोड करें
ऐप के एंट्री-पॉइंट पर केवल एक बार लोड करें। यदि आप भूल जाते हैं, तो मैप की स्थिति या नियंत्रण का स्वरूप बिगड़ जाएगा।
import '@mapconductor/react-for-cesium/style.css';
Cesium की स्थैतिक संपत्तियों (static assets) को परोसें
Cesium Workers, Assets, Widgets, और ThirdParty जैसी स्थैतिक फ़ाइलों को रनटाइम पर लोड करता है। आपको इन्हें परोसने के पथ (distribution path) पर कॉपी करना होगा और `CESIUM_BASE_URL` के माध्यम से उस स्थान की जानकारी देनी होगी। सैंपल ऐप (`examples/basic/vite.config.ts`) इस सेटिंग का एक उदाहरण है।
// 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/'),
}जाँच
आपको क्या दिखना चाहिए
यदि ग्लोब दिखाई देता है, तो पूर्ण हो गया।
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>
);
}मैप डिज़ाइन
CesiumDesign, Cesium के ImageryProvider को लपेटे हुए एक स्थिरांक (constant) है।
समस्या निवारण
कंसोल पर Worker या एसेट के लिए 404 आ रहा है
- स्थैतिक संपत्तियों (static assets) की कॉपी और `CESIUM_BASE_URL` की सेटिंग की जांच करें। Cesium उन्हें रनटाइम पर प्राप्त करने के लिए जाता है।
बंडल बड़ा है
- cesium एक बड़ी लाइब्रेरी है। केवल उन स्क्रीन को जिनमें 3D प्रदर्शन की आवश्यकता हो, उन्हें डायनामिक इंपोर्ट में अलग करें।
केवल विकास के समय मैप दो बार प्रारंभ होता है
- React StrictMode effect को दो बार निष्पादित करता है। प्रत्येक प्रदाता (provider) इसका पता लगाकर एक को नष्ट कर देता है, इसलिए StrictMode को हटाने की आवश्यकता नहीं है।
आगे
Cesium के पास एक वास्तविक 3D कैमरा है, इसलिए `tilt` और `bearing` सीधे प्रतिबिंबित होते हैं। यह Leaflet या OpenLayers के छद्म 3D (pseudo-3D) से व्यवहार में भिन्न है।