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

HERE का सेटअप

MapConductor से वेब पर HERE का उपयोग करने की प्रक्रिया यहाँ दी गई है। HERE Maps API for JavaScript को npm के बजाय CDN से लोड किया जाता है, और एप्लिकेशन पक्ष में H.service.Platform बनाया जाता है और व्यू में पास किया जाता है।

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

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

Node.js 18 या उससे अधिक
HERE Platform का API कुंजी
STEP 01

इंस्टॉल करें

पैकेज स्वयं HERE के JS API को शामिल नहीं करता है। पृष्ठ पक्ष द्वारा लोड किए गए H ग्लोबल का उपयोग किया जाता है।

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

HERE के JS API को लोड करें

HERE के स्वयं के क्विकस्टार्ट की तरह, CDN से script टैग के माध्यम से लोड किया जाता है। @mapconductor/react-for-here इन H ग्लोबल को प्रकाशित करने की अपेक्षा करता है।

index.htmlHTML
<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-core-legacy.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-service.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js"></script>
<link rel="stylesheet" href="https://js.api.here.com/v3/3.1/mapsjs-ui.css" />
STEP 03

Platform बनाएं और व्यू में पास करें

HERE में कुंजी को स्थिति हुक के बजाय H.service.Platform में पास किया जाता है। Platform को एप्लिकेशन पक्ष के प्रमाणीकरण विवरण से बनाया जाता है और इसे व्यू के platform props में पास किया जाता है। यदि आप useMemo में बनाते हैं, तो प्रत्येक री-रेंडर पर इसे पुनः नहीं बनाया जाएगा।

HereMap.tsxTypeScript · React
const platform = useMemo(
  () => new H.service.Platform({ apikey: import.meta.env.VITE_HERE_API_KEY }),
  [],
);

<HereMapView2D state={state} platform={platform}>{children}</HereMapView2D>
सावधानी
कुंजी को बिल्ड समय के पर्यावरण चर (Vite के लिए import.meta.env.VITE_*) से पास करें, और स्रोत प्रबंधन में न डालें। जब तक यह फ्रंटएंड को पास हो रहा है, रेफरर प्रतिबंध और डोमेन प्रतिबंध को ज़रूर लगाएं ताकि यह सार्वजनिक होने पर कोई नुकसान न हो।

जाँच

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

यदि HERE का मानचित्र दिखाई दे तो कार्य पूर्ण है। वेब का HERE प्रोवाइडर केवल 2D व्यू है।

HereMap.tsxTypeScript · React
import { useMemo, useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { HereMapDesign, HereMapView2D, useHereViewState } from '@mapconductor/react-for-here';

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

export function HereMap() {
  const state = useHereViewState({
    mapDesignType: HereMapDesign.NormalDay,
    cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
  });
  // HERE Maps API for JavaScript is loaded from the CDN (see index.html);
  // the platform must be created with the host page's own credentials.
  const platform = useMemo(
    () => new H.service.Platform({ apikey: import.meta.env.VITE_HERE_API_KEY }),
    [],
  );
  const [markerState] = useState(() => createMarkerState({ id: 'tokyo', position: TOKYO }));

  return (
    <HereMapView2D state={state} platform={platform}>
      <Marker state={markerState} />
    </HereMapView2D>
  );
}

मैप डिज़ाइन

HereMapDesign HERE के मानचित्र योजनाओं के अनुरूप है।

HereMapDesign
Notes
NormalDay / NormalNight
मानक शैली दिन/रात
Satellite
उपग्रह चित्र
HybridDay / HybridNight
उपग्रह चित्र + सड़कें और लेबल
LiteDay / LiteNight
हल्की शैली
LogisticsDay
लॉजिस्टिक्स के लिए

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

H अपरिभाषित हो जाता है

  • जांचें कि index.html में script टैग लोड हो रहा है या नहीं और क्रम सही है या नहीं (core → core-legacy → service → ui → mapevents)।
  • यदि आप SSR कर रहे हैं, तो Platform के निर्माण को केवल क्लाइंट पक्ष पर किया जाना चाहिए।

मानचित्र नहीं दिख रहा है

  • जांचें कि H.service.Platform में पास किया गया apikey सही है या नहीं।

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

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

आगे

यदि मार्कर कई हैं, तो markerTilingOptions पास करने पर स्थिर मार्कर समूह को रेखापुंज ओवरले के रूप में एक साथ प्रदर्शित किया जाएगा।