Android के लिए Navigation SDK टूल, वेपॉइंट या नेविगेशन पॉइंट सेट करने के बेहतर तरीके उपलब्ध कराता है. इससे ज़्यादा सटीक रूटिंग और बेहतर तरीके से पहुंचने की सुविधा मिलती है. खास तौर पर, उन जगहों के लिए जहां कई प्रवेश द्वार हैं या नेविगेशन के लिए खास पॉइंट हैं. navigationPointToken का इस्तेमाल करके, सटीक जगहों पर रूट किया जा सकता है. यह एक स्ट्रिंग होती है, जो किसी जगह और रूट के बारे में अतिरिक्त जानकारी को एन्कोड करती है. ज़्यादा जानकारी के लिए, अक्षांश और देशांतर के निर्देशांकों को जगह के आईडी के साथ भी जोड़ा जा सकता है.
बैकग्राउंड
v7.4 से पहले, अक्षांश और देशांतर के निर्देशांक या जगह के आईडी का इस्तेमाल करके, Waypoint तय किया जा सकता था. कभी-कभी सिर्फ़ अक्षांश और देशांतर की जानकारी देने से, पिकअप या ड्रॉप-ऑफ़ करने की सही जगह नहीं मिल पाती. ऐसा खास तौर पर बड़े वेन्यू, पार्क या कई दरवाज़ों वाली इमारतों के मामले में होता है. ऐसा हो सकता है कि नतीजा, सड़क के सबसे नज़दीकी हिस्से पर स्नैप हो जाए. यह नेविगेशन के लिए सबसे सही या सुविधाजनक पॉइंट नहीं हो सकता.
बेहतर वेपॉइंट विकल्पों की मदद से, इस समस्या को हल किया जा सकता है. इससे ज़्यादा कॉन्टेक्स्ट उपलब्ध कराया जा सकता है.
नेविगेशन पॉइंट टोकन का इस्तेमाल करना
अगर आपको नेविगेशन के खास पॉइंट, जैसे कि प्रवेश द्वार, लोडिंग डॉक या पिक-अप के लिए तय की गई जगहों तक पहुंचने के लिए सबसे सटीक रूट चाहिए, तो navigationPointToken का इस्तेमाल करें. यह टोकन, Geocoding API के destinations
method को कॉल करके मिलता है. यह किसी जगह से जुड़े, नेविगेशन के लिए इस्तेमाल किए जा सकने वाले किसी खास पॉइंट को दिखाता है.
नेविगेशन पॉइंट टोकन तय करने के लिए:
- Geocoding API के Destinations तरीके के जवाब से
navigationPointTokenपाएं. - बिल्डर में
setNavigationPointToken()तरीके का इस्तेमाल करके,Waypointबनाएं.
ध्यान दें: setNavigationPointToken() का इस्तेमाल करते समय, setLatLng() या setPlaceIdString() का एक साथ इस्तेमाल नहीं किया जा सकता. ये तरीके, setNavigationPointToken() के साथ काम नहीं करते.
// 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 का दस्तावेज़ देखें. रास्ते का टोकन इस्तेमाल करके रास्ता प्लान करने का तरीका जानने के लिए, "रास्ता प्लान करना" लेख पढ़ें.
इस डायग्राम में दिखाया गया है कि राइडशेयर या डिलीवरी ऐप्लिकेशन, नेविगेशन पॉइंट टोकन और रूट टोकन का एक साथ इस्तेमाल कैसे करेगा:
जगह के आईडी और अक्षांश और देशांतर को एक साथ इस्तेमाल करना
v7.4 से, Waypoint बनाते समय, जगह का आईडी और अक्षांश और देशांतर के निर्देशांक दोनों दिए जा सकते हैं. यह तरीका तब काम आता है, जब आपको किसी सटीक पॉइंट (अक्षांश/देशांतर) की जानकारी देनी हो. साथ ही, आपको उस जगह के बारे में सामान्य जानकारी (जगह का आईडी) भी देनी हो. इससे Navigation SDK को, गंतव्य पर पहुंचने का बेहतर अनुभव देने में मदद मिलती है. इसके लिए, वह गंतव्य की इमारत को हाइलाइट करता है या Place ID से जुड़ी आस-पास की लोकप्रिय जगहों को दिखाता है.
// 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 के destinations तरीके के मूल अनुरोध में तय की गई मंज़िल से मिलती है |
| अक्षांश/देशांतर के कोऑर्डिनेट और जगह का आईडी एक साथ | सेट करो | सेट करो | अनुपस्थित | तय किए गए निर्देशांकों के सबसे नज़दीकी सड़क सेगमेंट तक पहुंचने के रास्ते | जगह के आईडी से, हालांकि अगर जगह का आईडी अक्षांश/देशांतर निर्देशांकों से बहुत दूर है, तो यह नहीं दिखाया जाता |