Android के लिए Navigation SDK, वेपॉइंट या नेविगेशन पॉइंट तय करने के बेहतर तरीके उपलब्ध कराता है. इससे ज़्यादा सटीक रूटिंग और पहुंचने का बेहतर अनुभव मिलता है. खास तौर पर, उन डेस्टिनेशन के लिए जहां कई एंट्री पॉइंट या खास नेविगेशन पॉइंट होते हैं. navigationPointToken का इस्तेमाल करके, जगह की सटीक जानकारी पर पहुंचा जा सकता है. यह एक स्ट्रिंग होती है, जो किसी जगह और रास्ते के बारे में ज़्यादा जानकारी को कोड में बदलती है. ज़्यादा जानकारी देने के लिए, अक्षांश और देशांतर के निर्देशांकों को जगह के आईडी के साथ भी जोड़ा जा सकता है.
बैकग्राउंड
v7.4 से पहले, अक्षांश और देशांतर निर्देशांक या जगह के आईडी का इस्तेमाल करके, Waypoint को तय किया जा सकता था. कभी-कभी, सिर्फ़ अक्षांश और देशांतर के हिसाब से रूट तय करने से, ड्रॉप-ऑफ़ या पिक-अप पॉइंट सही नहीं मिलते. ऐसा खास तौर पर बड़ी जगहों, पार्कों या कई एंट्री पॉइंट वाली इमारतों के लिए होता है. नतीजा, सड़क के सबसे नज़दीकी हिस्से पर स्नैप हो सकता है. हालांकि, हो सकता है कि यह सबसे सुविधाजनक या सही नेविगेशन पॉइंट न हो.
वेपॉइंट के बेहतर विकल्पों की मदद से, ज़्यादा जानकारी दी जा सकती है.
नेविगेशन पॉइंट टोकन का इस्तेमाल करना
एंट्रेंस, लोडिंग डॉक या पिक-अप के लिए तय की गई जगहों जैसे खास नेविगेशन पॉइंट पर सबसे सटीक रूटिंग के लिए, navigationPointToken का इस्तेमाल किया जा सकता है. यह टोकन, Geocoding API के डेस्टिनेशन मेथड को कॉल करके मिलता है. यह किसी जगह से जुड़े खास और रूट किए जा सकने वाले नेविगेशन पॉइंट को दिखाता है.
नेविगेशन पॉइंट टोकन की जानकारी देने के लिए:
-
Geocoding API
से मिले जवाब के
SearchDestinationsतरीके सेnavigationPointTokenपाएं. - बिल्डर में
setNavigationPointToken()तरीके का इस्तेमाल करके,Waypointबनाएं.
// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithToken = Waypoint.builder()
.setTitle(destinationName)
.setNavigationPointToken(navPointToken)
.build();
// Use this waypoint in navigator.setDestinations()
नेविगेशन पॉइंट टोकन और रूट टोकन इस्तेमाल करना
Geocoding API की मदद से, नेविगेशन पॉइंट टोकन को वापस पाया जा सकता है. इसके बाद, रूट टोकन पाने के लिए, Routes API के अनुरोध में इसका इस्तेमाल किया जा सकता है. इसके बाद, Navigation SDK को सिर्फ़ रूट टोकन पास किया जा सकता है. रूट टोकन, नेविगेशन पॉइंट टोकन की सटीक जानकारी को बनाए रखता है. यह राइडशेयर या डिलीवरी जैसे मामलों में काम आता है. इनमें यात्रा की कीमत का हिसाब लगाने के लिए, Routes API का इस्तेमाल किया जाता है. साथ ही, आपको सटीक नेविगेशन पॉइंट टोकन चाहिए होता है.
रूट टोकन की मदद से, Navigation SDK उसी रूट पर नेविगेशन शुरू करता है जिसका इस्तेमाल आपने कीमत का हिसाब लगाने के लिए किया था. इससे यात्रा के लिए लंबे या छोटे रास्तों का इस्तेमाल करने का जोखिम कम हो जाता है. इससे "किराये में अचानक होने वाले बदलाव" से बचा जा सकता है.
Routes API में नेविगेशन पॉइंट टोकन और रूट टोकन के बारे में ज़्यादा जानने के लिए, किसी रास्ते के लिए जगहें तय करना और रूट टोकन पाना लेख पढ़ें. रूट टोकन का इस्तेमाल करके रूट प्लान करने का तरीका जानने के लिए, रूट प्लान करना लेख पढ़ें.
यहां दिए गए डायग्राम में दिखाया गया है कि राइड शेयरिंग या डिलीवरी ऐप्लिकेशन, नेविगेशन पॉइंट टोकन और रूट टोकन का एक साथ इस्तेमाल कैसे करेगा. वर्शन 8.1 से, ड्राइवर ऐप्लिकेशन सातवें चरण में Navigation SDK को सिर्फ़ रूट टोकन पास करता है.
जगह के आईडी, अक्षांश, और देशांतर को जोड़ना
v7.4 से, Waypoint बनाते समय, जगह का आईडी और अक्षांश और देशांतर निर्देशांक, दोनों दिए जा सकते हैं. यह तरीका तब काम आता है, जब आपको किसी जगह के आईडी के साथ-साथ, उसकी सटीक जगह (अक्षांश/देशांतर) की जानकारी भी देनी हो. इससे Navigation SDK, मंज़िल पर पहुंचने का बेहतर अनुभव दे पाता है. इसके लिए, वह मंज़िल की इमारत को हाइलाइट करता है या जगह के आईडी से जुड़ी आस-पास की लोकप्रिय जगहों को दिखाता है.
// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
.setTitle(destinationName)
.setPlaceIdString(placeId)
.setLatLng(lat, lng)
.build();
// Use this waypoint in navigator.setDestinations()
ज़रूरी बातें
placeId और latlng, दोनों एट्रिब्यूट की वैल्यू सबमिट करने पर:
- रूट मुख्य रूप से, तय किए गए
latlngको टारगेट करता है. placeIdका इस्तेमाल, कॉन्टेक्स्ट के तौर पर किया जाता है, ताकि पिक-अप की जगह पर पहुंचने के अनुभव को बेहतर बनाया जा सके.- फ़ॉलबैक: अगर एसडीके को पता चलता है कि दिया गया
placeId, किसी ऐसी सुविधा से जुड़ा है जो दिए गएlatlngसे काफ़ी दूर है, तोplaceIdको अनदेखा कर दिया जाएगा. इस मामले में, रूटिंग सिर्फ़latlngतक होगी. साथ ही, जगह के हिसाब से पहुंचने के अनुभव को बेहतर बनाने की सुविधाएं उपलब्ध नहीं होंगी.
मान्य वेपॉइंट कॉन्फ़िगरेशन की खास जानकारी
| तरीका | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
रूटिंग का तरीका | डेस्टिनेशन हाइलाइट करना |
|---|---|---|---|---|---|
| सिर्फ़ अक्षांश/देशांतर के निर्देशांक | सेट करो | अनुपस्थित | अनुपस्थित | तय किए गए निर्देशांकों के सबसे नज़दीक मौजूद सड़क के हिस्से तक पहुंचने के रास्ते | यह तब दिखता है, जब मंज़िल का अनुमान पूरी तरह से लगाया जा सकता है |
| सिर्फ़ जगह का आईडी | अनुपस्थित | सेट करो | अनुपस्थित | जगह के आईडी के लिए, डिफ़ॉल्ट नेविगेशन पॉइंट के रूट | जगह के आईडी से |
| सिर्फ़ नेविगेशन पॉइंट टोकन | अनुपस्थित | अनुपस्थित | सेट करो | टोकन से दिखाए गए सटीक नेविगेशन पॉइंट के रूट | Geocoding API के डेस्टिनेशन मेथड के अनुरोध में तय किए गए ओरिजनल डेस्टिनेशन से |
| अक्षांश/देशांतर निर्देशांक और जगह का आईडी, दोनों | सेट करो | सेट करो | अनुपस्थित | तय किए गए निर्देशांकों के सबसे नज़दीक मौजूद सड़क के हिस्से तक पहुंचने के रास्ते | जगह के आईडी से. हालांकि, अगर जगह का आईडी, अक्षांश/देशांतर निर्देशांकों से बहुत दूर है, तो यह नहीं दिखाया जाता |