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

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

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

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

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

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

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

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

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

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

चरण 0 - रूट सेटअप करें

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

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

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

जुड़े हुए स्टॉप और टास्क के साथ एक मान्य रास्ता तय करने के बाद, आप रूट ओवरव्यू एपीआई शुरू कर सकते हैं. शुरू करने से, Fleet Engine और एपीआई के बीच कनेक्शन के लिए ज़रूरी फ़्रेमवर्क मिलता है. रूट खास जानकारी एपीआई को उसी कॉन्टेक्स्ट ऑब्जेक्ट से शुरू किया जाना चाहिए जिसका इस्तेमाल आपने ड्राइवर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 की वैल्यू का इस्तेमाल करके इसी तरीके को कॉल करें.

चौथा चरण - 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();