Mapbox का सेटअप
ये Mapbox को MapConductor के ज़रिए Web पर इस्तेमाल करने का तरीका है। एक्सेस टोकन की ज़रूरत सिर्फ़ उस समय होती है जब आप Mapbox-होस्ट की स्टाइल (mapbox:// से शुरू होने वाली) इस्तेमाल कर रहे हों।
शुरू करने से पहले
इंस्टॉल करें
mapbox-gl पैकेज में शामिल है, इसलिए आपको अलग से इंस्टॉल करने की ज़रूरत नहीं है। React Native वर्ज़न उपलब्ध नहीं है।
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
@mapconductor/react-for-mapboxस्टाइलशीट लोड करें
इसे ऐप के एंट्री-पॉइंट पर सिर्फ़ एक बार लोड करें। अगर आप भूल गए तो मैप की पोज़ीशन और कंट्रोल का लुक़ खराब हो सकता है।
import '@mapconductor/react-for-mapbox/style.css';
एक्सेस टोकन पास करें (अगर ज़रूरत हो)
टोकन को स्टेट हुक में पास करें। आंतरिक रूप से यह mapboxgl.accessToken में ग्लोबल सेटिंग के रूप में सेट होता है। अगर आप सिर्फ़ OSM-आधारित डिज़ाइन इस्तेमाल कर रहे हैं तो इसे छोड़ा जा सकता है।
const mapState = useMapboxViewState({
id: 'mapbox-map',
accessToken: import.meta.env.VITE_MAPBOX_ACCESS_TOKEN,
mapDesignType: MapboxDesign.Streets,
cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
});जाँच
आपको क्या दिखना चाहिए
OsmBright इस्तेमाल करके आप बिना टोकन के भी काम करने की पुष्टि कर सकते हैं।
import { useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { MapboxDesign, MapBoxMapView2D, useMapboxViewState } from '@mapconductor/react-for-mapbox';
import '@mapconductor/react-for-mapbox/style.css';
const TOKYO = createGeoPoint({ latitude: 35.6812, longitude: 139.7671 });
export function HelloMap() {
// No token needed for the OsmBright design
const mapState = useMapboxViewState({
id: 'mapbox-map',
mapDesignType: MapboxDesign.OsmBright,
cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
});
const [markerState] = useState(() => createMarkerState({ id: 'tokyo', position: TOKYO }));
return (
<MapBoxMapView2D state={mapState} style={{ height: 480 }}>
<Marker state={markerState} />
</MapBoxMapView2D>
);
}स्टेट ऑब्जेक्ट
ये useMapboxViewState द्वारा प्राप्त पैरामीटर हैं। ध्यान दें कि व्यू का export नाम MapBoxMapView / MapBoxMapView2D (B बड़ा अक्षर) है।
useMapboxViewState({
id?: string;
accessToken?: string;
mapDesignType?: MapboxMapDesignType; // default MapboxDesign.Streets
cameraPosition?: MapCameraPosition; // default MapCameraPosition.Default
})मैप डिज़ाइन
MapboxDesign दो समूहों में बंटता है: जिनमें टोकन चाहिए और जिनमें नहीं।
समस्या निवारण
सिर्फ़ Mapbox की स्टाइल दिखाई नहीं दे रही
- mapbox:// से शुरू होने वाली स्टाइल के लिए टोकन चाहिए। जांचें कि क्या आप accessToken पास कर रहे हैं।
- जांचें कि टोकन पब्लिक टोकन है और एक्सपायर नहीं हुआ है।
ज़ूम स्तर दूसरे प्रोवाइडर से अलग है
- MapConductor Google के मानक के अनुसार ज़ूम सेट करता है। Mapbox उसमें वास्तविक ऑफसेट (googleZoom ≒ mapboxZoom + 1.0) लगाकर कन्वर्ज़ करता है।
डेवलपमेंट के दौरान मैप दो बार इनिशियलाइज़ होता है
- React StrictMode effect को दो बार चलाता है। हर प्रोवाइडर इसे पहचानकर एक को खारिज कर देता है, इसलिए StrictMode हटाने की ज़रूरत नहीं है।
आगे
MapLibre के समान संरचना के कारण, mapDesignType का परिवर्तन मानचित्र का पुनर्निर्माण करेगा।