रूट की खास जानकारी देने वाला एपीआई

रूट की खास जानकारी देने वाला एपीआई, DriverSDK पर बनाया गया एक लास्ट माइल फ़्लीट सॉल्यूशन प्रॉडक्ट है. इसकी मदद से, किसी वाहन के लिए रास्ते की जानकारी हासिल की जा सकती है. यह जानकारी, एक बार फ़ेच करने के लिए या अपडेट के लिए लिसनर का इस्तेमाल करके लगातार मिलती है. रूट की खास जानकारी वाला एपीआई इस तरह की जानकारी के साथ काम करता है:

  • पूरे रास्ते का प्लान, जिसमें वाहन स्टॉप की जगह, यात्रा में लगने वाला समय, और दूरी शामिल हैं
  • हर स्टॉप के बीच का रूट पॉलीलाइन पथ.

इस दस्तावेज़ में आपके ऐप्लिकेशन के एपीआई के साथ इंटिग्रेशन के चरणों की जानकारी दी गई है.

ज़रूरी शर्तें

  • आपको ड्राइवर SDK v4.1.0 या उसके बाद के वर्शन के ऐल्फ़ा चैनल का इस्तेमाल करके, अपना Android ऐप्लिकेशन चलाना होगा. ऐल्फ़ा चैनल, Maven आर्टफ़ैक्ट आईडी के लिए transportation-driver-alpha का इस्तेमाल करने पर उपलब्ध होता है.
  • एपीआई, डिलीवरी एपीआई के ज़रिए Fleet Engine से मिली रूट की जानकारी का इस्तेमाल करता है. यह जानकारी, ड्राइवर SDK टूल (DeliveryDriverApi) के एपीआई की मदद से या सीधे Fleet Engine पर दी जा सकती है.

इंटिग्रेशन का तरीका

इस सेक्शन में, Android ड्राइवर ऐप्लिकेशन को एपीआई से इंटिग्रेट करने के बुनियादी तरीके बताए गए हैं. इन निर्देशों के आधार पर ये आकलन किए जाते हैं:

  • आपके पास एक ऐसा Android ऐप्लिकेशन है जिसे पहले से ही Driver SDK टूल के साथ इंटिग्रेट किया जा चुका है
  • आपने अपने ऐप्लिकेशन में DeliveryDriverApi को ऐसे कॉन्टेक्स्ट ऑब्जेक्ट के साथ शुरू किया है जो आपको मिल सकता है

ज़्यादा जानकारी के लिए, Android के लिए ड्राइवर SDK टूल का इस्तेमाल शुरू करने का तरीका देखें.

चरण 0 - रास्ता सेटअप

अगर आपने Fleet Engine को पहले ही सेट अप कर लिया है और गाड़ी के स्टॉप और डिलीवरी के टास्क बनाए जा सकते हैं, तो इस चरण को छोड़ा जा सकता है.

फ़्लीट इंजन में स्टॉप और टास्क की जानकारी लोड करने के लिए, आपको डिलीवरी वाहन के लिए कोई मान्य रास्ता असाइन करना होगा. ऐसा इसलिए होता है, क्योंकि रूट की खास जानकारी देने वाले एपीआई को डेटा फ़ेच करने के लिए मान्य रूट की ज़रूरत होती है. मान्य रास्तों में वेपॉइंट और स्टॉप की एक सीरीज़ होती है. एक स्टॉप सिर्फ़ तब मौजूद हो सकता है, जब उसमें कम से कम एक टास्क जुड़ा हो. ज़्यादा जानकारी के लिए, Fleet Engine API इंटिग्रेशन गाइड देखें.

पहला चरण - एपीआई शुरू करें

स्टॉप और टास्क के साथ मान्य रूट तय करने के बाद, रूट की खास जानकारी देने वाला एपीआई शुरू किया जा सकता है. प्रोसेस शुरू करने से, फ़्लीट इंजन और एपीआई के बीच कनेक्शन के लिए ज़रूरी फ़्रेमवर्क मिलता है. रूट की खास जानकारी वाले एपीआई को उसी कॉन्टेक्स्ट ऑब्जेक्ट के साथ शुरू किया जाना चाहिए जिसका इस्तेमाल आपने ड्राइवरSDK टूल में DeliveryDriverApi को शुरू करने के लिए किया था. ऐसा इसलिए, क्योंकि ऑब्जेक्ट उसी वाहन आईडी से जुड़ा है जो आपके DriverContext ऑब्जेक्ट में पहले बताया गया था. इस उदाहरण में, RouteOverviewApi का इंस्टेंस बनाने का तरीका बताया गया है.


RouteOverviewApi api = RouteOverviewApi.getInstance();
if (api == null) {
    api = RouteOverviewApi.createInstance(context);
}

दूसरा चरण - रास्ता बदलने से जुड़े इवेंट के लिए वाहन रजिस्टर करें

आपने एपीआई शुरू कर लिया है, इसलिए अब रास्ते की खास जानकारी की क्षमताओं के साथ इंटरैक्ट करने के लिए, VehicleRouteOverview ऑब्जेक्ट का इस्तेमाल किया जा सकता है. इससे आपका ऐप्लिकेशन, रूट सेटअप करते समय दी गई रास्ते की जानकारी का इस्तेमाल कर सकता है. इवेंट अपडेट और रूट वापस पाने की सुविधा देने के लिए, एपीआई इवेंट लिसनर का इस्तेमाल करें.

रास्ते में बदलाव तब होता है, जब वाहन को असाइन किए गए किसी भी स्टॉप का रास्ता अपडेट किया जाता है, स्टॉप को फिर से व्यवस्थित किया जाता है या जब फ़्लीट इंजन ईईटी की जानकारी अपडेट करता है.


vehicleRouteOverview.addOnRouteChangedEventListener(event -> {
    // handle route update events
});

तीसरा चरण - एपीआई चालू करना

अब जब आप रास्ते की जानकारी का इस्तेमाल करने के लिए तैयार हैं, तो आपको एपीआई चालू करना होगा, ताकि यह वाहन इवेंट का जवाब दे सके. याद रखें कि नेटवर्क बैंडविथ के बेवजह इस्तेमाल से बचने के लिए, एपीआई को बंद स्थिति में शुरू किया गया है.

vehicleRouteOverview.setRouteOverviewEnabled(true);

false की वैल्यू के साथ इसी तरीके को कॉल करके, इन अपडेट को किसी भी समय रोका जा सकता है.

चरण 4 - Google Maps पर रास्ते की जानकारी बनाएं

RouteToVehicleStop की सूची मिलने के बाद, उसे अपने ऐप्लिकेशन में इस्तेमाल किया जा सकता है. उदाहरण के लिए, Google Maps इंस्टेंस में रूट पॉलीलाइन पाथ बनाया जा सकता है. यह कोड स्निपेट एक उदाहरण दिखाता है, जो मैप व्यू पर रूट पॉलीलाइन बनाता है और हर स्टॉप के ऊपर मार्कर जोड़ता है.

    GoogleMap googleMap = … // Instance of the Map view you are using
    ImmutableList<RouteToVehicleStop> route = event.newRoute();

    PolylineOptions routePolyline = new PolylineOptions().color(Color.BLUE);
    for (RouteToVehicleStop stop : route) {
        routePolyline.addAll(stop.path());

        MarkerOptions marker =
            new MarkerOptions().position(stop.vehicleStop().getWaypoint().getPosition());
        googleMap.addMarker(marker);
    }

    googleMap.addPolyline(routePolyline);
}

रास्ते की खास जानकारी की इमेज दिखाने वाला स्क्रीनशॉट

इससे यह व्यू, दाईं ओर दिए गए स्क्रीनशॉट जैसा दिखता है:

पांचवां चरण - रास्ते का स्नैपशॉट पाना

अगर आप चाहते हैं कि आपका ऐप्लिकेशन एक बार इस्तेमाल किया जाने वाला कॉल करे, ताकि आपको मौजूदा रास्ते की जानकारी का स्नैपशॉट मिल सके, तो उस डेटा को पाने के लिए नीचे दिया गया तरीका अपनाया जा सकता है:

ListenableFuture<ImmutableList<RouteToVehicleStop> future = vehicleRouteOverview.getRouteToVehicleStops();
ImmutableList<RouteToVehicleStop> stops = future.get();

इवेंट लिसनर के ज़रिए रूट अपडेट पाने की सदस्यता लेने के बजाय, ऐसा किया जा सकता है.

छठा चरण - स्टोरेज खाली करना

अगर आपके ऐप्लिकेशन को अब रास्ते की खास जानकारी देने वाली सुविधा की ज़रूरत नहीं है, तो आपको यह पक्का करना चाहिए कि आपने मेमोरी खाली कर ली है. क्लीनअप करने से आपके ऐप्लिकेशन में ग़ैर-ज़रूरी मेमोरी, प्रोसेसिंग, और नेटवर्क के इस्तेमाल से बचा जा सकता है.

किसी इवेंट लिसनर को हटाना

अगर किसी चुनिंदा लिसनर की अब ज़रूरत न हो, तो आपको इवेंट लिसनर को हटा देना चाहिए.

vehicleRouteOverview.removeOnRouteChangedEventListener(listener);

सभी इवेंट लिसनर को हटाएं

क्लीनअप रूटीन के तहत, एक बार में रजिस्टर किए गए सभी अलग-अलग इवेंट लिसनर को हटाया जा सकता है.

vehicleRouteOverview.clearEventListeners();

रूट की खास जानकारी वाले एपीआई के इंस्टेंस मिटाएं

अगर रास्ते की खास जानकारी की ज़रूरत नहीं है या ट्रैक किए जा रहे वाहन का आईडी बदल गया है, तो इंटरनल रेफ़रंस हटाने के लिए इस एपीआई का इस्तेमाल करें.

vehicleRouteOverview.clearInstance();