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

MapLibre का सेटअप

Web पर MapConductor से MapLibre का उपयोग करने की प्रक्रिया है। इसके लिए कुंजी की आवश्यकता नहीं है, और आप इसे सबसे तेज़ी से शुरू कर सकते हैं। maplibre-gl पैकेज के साथ बंडल किया गया है।

PACKAGE
react-for-maplibre
API KEY
अनावश्यक
CSS
आवश्यक
REACT NATIVE
हाँ
वही प्रोवाइडर, दूसरे प्लेटफ़ॉर्मAndroidiOS

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

Node.js 18 या इससे ऊपर
React 18 या 19
STEP 01

इंस्टॉल करें

maplibre-gl पैकेज के साथ शामिल है, इसलिए इसे अलग से इंस्टॉल करने की आवश्यकता नहीं है।

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

Vite के प्री-बंडलिंग से बाहर निकालें

Vite का उपयोग करते समय प्रदाता को optimizeDeps.exclude में जोड़ें। maplibre-gl v6 वर्कर को URL से लोड करता है, इसलिए यदि यह पहले से बंडल कर दिया जाता है, तो वर्कर फ़ाइल .vite/deps के नीचे आउटपुट नहीं होगी और लोड करना विफल हो जाएगा।

vite.config.tsTypeScript · Vite
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
    optimizeDeps: {
        exclude: ["@mapconductor/react-for-maplibre", "@mapconductor/js-sdk-core"],
    },
    plugins: [react()],
});
STEP 03

स्टाइलशीट लोड करें

ऐप के एंट्री पॉइंट पर इसे एक बार लोड करें। यदि आप भूल जाते हैं, तो मानचित्र की स्थिति और नियंत्रण की दृश्यता बिगड़ जाएगी।

main.tsxTypeScript
import '@mapconductor/react-for-maplibre/style.css';
STEP 04

स्टाइल तय करें

MapLibre में कोई कुंजी नहीं है, लेकिन आपको टाइल का स्रोत स्वयं तय करना होगा। डिफ़ॉल्ट DemoTiles केवल कार्यक्षमता की पुष्टि के लिए हैं।

सावधानी
OsmBright श्रृंखला, MapTiler श्रृंखला, और OpenMapTiles स्टाइल जापान-उन्मुख सार्वजनिक डेमो टाइल होस्ट (tile.openstreetmap.jp) से परोसे जाते हैं। विकास के दौरान यह उपयोगी है, लेकिन प्रोडक्शन ट्रैफ़िक और लाइसेंस अनुपालन के लिए कृपया mapDesignType में अपना स्वयं का स्टाइल JSON निर्दिष्ट करें।

जाँच

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

टोक्यो को केंद्र में रखकर मानचित्र प्रदर्शित होता है और एक मार्कर स्थापित होता है, तब पूर्ण हो जाता है।

HelloMap.tsxTypeScript · React
import { useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { MapLibreDesign, MapLibreMapView2D, useMapLibreViewState } from '@mapconductor/react-for-maplibre';
import '@mapconductor/react-for-maplibre/style.css';

const TOKYO = createGeoPoint({ latitude: 35.6812, longitude: 139.7671 });

export function HelloMap() {
  const mapState = useMapLibreViewState({
    id: 'maplibre-map',
    mapDesignType: MapLibreDesign.DemoTiles,
    cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
  });
  const [markerState] = useState(() => createMarkerState({ id: 'tokyo', position: TOKYO }));

  return (
    <MapLibreMapView2D state={mapState} style={{ height: 480 }}>
      <Marker state={markerState} />
    </MapLibreMapView2D>
  );
}

स्टेट ऑब्जेक्ट

useMapLibreViewState द्वारा प्राप्त पैरामीटर हैं। MapLibreMapView 3D में है, MapLibreMapView2D 2D में है, और दोनों एक ही स्थिति साझा करते हैं।

signatureTypeScript
useMapLibreViewState({
  id?: string;
  mapDesignType?: MapLibreMapDesignType; // default MapLibreDesign.OsmBright
  cameraPosition?: MapCameraPosition;    // default MapCameraPosition.Default
})

// View props, on top of the shared MapViewBaseProps
{
  maxZoom?: number;
  minZoom?: number;
  projection?: 'mercator' | 'globe';   // a component prop, not part of state
  containerStyle?: React.CSSProperties;
  markerTilingOptions?: MarkerTilingOptions;
  onError?: (error: Error) => void;
}

मैप डिज़ाइन

MapLibreDesign स्टाइल JSON के URL को लपेटने वाला एक स्थिरांक है।

MapLibreDesign
Notes
DemoTiles
demotiles.maplibre.org। कोई कॉन्फ़िगरेशन के बिना काम करता है
OsmBright / OsmBrightEn / OsmBrightJa
OSM Bright। लेबल की भाषा भिन्न
MapTilerTonerEn / MapTilerTonerJa
उच्च कंट्रास्ट वाला Toner स्टाइल
MapTilerBasicEn / MapTilerBasicJa
जानकारी कम करने वाला Basic स्टाइल
OpenMapTiles
सामान्य प्रयोग के लिए OpenMapTiles स्टाइल

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

स्टाइल बदलने पर मानचित्र एक पल के लिए गायब हो जाता है

  • mapDesignType का परिवर्तन setStyle के बजाय मानचित्र का पुनर्निर्माण करता है। स्टाइल बदलना सस्ता नहीं है। कृपया बार-बार बदलने वाले UI से बचें।

मानचित्र की स्थिति या नियंत्रण बिगड़ जाते हैं

  • जांचें कि क्या style.css लोड हो रहा है।

विकास के दौरान ही मानचित्र दोहराकर प्रारंभ होता है

  • React StrictMode प्रभाव को दो बार निष्पादित करता है। प्रत्येक प्रदाता इसका पता लगाता है और एक को निपटाने के लिए डिज़ाइन किया गया है, इसलिए StrictMode हटाने की आवश्यकता नहीं है।

आगे

projection="globe" गुजारने से ग्लोब डिस्प्ले होता है। यह व्यू के props में है, और स्टेट ऑब्जेक्ट में शामिल नहीं है।