iOS के लिए Navigation SDK टूल की मदद से, वेपॉइंट या नेविगेशन पॉइंट तय करने के बेहतर तरीके मिलते हैं. इससे ज़्यादा सटीक रूटिंग और बेहतर तरीके से मंज़िल तक पहुंचने का अनुभव मिलता है. खास तौर पर, उन जगहों के लिए जहां कई एंट्री या खास नेविगेशन पॉइंट होते हैं. navigationPointToken का इस्तेमाल करके, सटीक जगहों के लिए रूटिंग की जा सकती है. यह एक स्ट्रिंग होती है, जो किसी जगह और रूट के अतिरिक्त कॉन्टेक्स्ट को एनकोड करती है. ज़्यादा कॉन्टेक्स्ट के लिए, अक्षांश और देशांतर के निर्देशांकों को जगह के आईडी के साथ भी जोड़ा जा सकता है.
बैकग्राउंड
वर्शन 10.10 से पहले, Waypoint को जगह के निर्देशांकों या Place ID का इस्तेमाल करके तय किया जा सकता था. कभी-कभी यह तरीका काम करता है, लेकिन सिर्फ़ अक्षांश और देशांतर के हिसाब से रूटिंग करने पर, कभी-कभी ड्रॉप-ऑफ़ या पिक-अप पॉइंट सही नहीं होते. खास तौर पर, बड़ी जगहों, पार्कों या कई एंट्री वाले भवनों के लिए. ऐसा हो सकता है कि नतीजा, सड़क के सबसे नज़दीकी सेगमेंट पर स्नैप हो जाए. हालांकि, यह सबसे सही या सुविधाजनक ऐक्सेस पॉइंट नहीं हो सकता.
वेपॉइंट के बेहतर विकल्पों की मदद से, इस समस्या को हल किया जा सकता है. इसके लिए, आपको ज़्यादा कॉन्टेक्स्ट देना होगा.
नेविगेशन पॉइंट टोकन का इस्तेमाल करना
एंट्री, लोडिंग डॉक या पिक-अप के लिए तय की गई जगहों जैसे सटीक ऐक्सेस पॉइंट के लिए रूटिंग करने के लिए, navigationPointToken का इस्तेमाल किया जा सकता है.
यह टोकन, Geocoding API के Destinations तरीके को कॉल करके मिलता है. यह किसी जगह से जुड़े, रूट किए जा सकने वाले खास नेविगेशन पॉइंट को दिखाता है.
नेविगेशन पॉइंट टोकन तय करने के लिए:
Geocoding API के रिस्पॉन्स के Destinations तरीके से,
navigationPointTokenपाएं.GMSNavigationWaypointबनाते समय,navigationPointTokenतय करें.
ध्यान दें: नेविगेशन पॉइंट टोकन के साथ-साथ, जगह और PlaceID को एक साथ तय नहीं किया जा सकता.
Swift
// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3.."
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
Objective-C
GMSNavigationWaypoint *waypointTwo = [[GMSNavigationWaypoint alloc] initWithNavigationPointToek:@"sampleNavigationPointToken"
नेविगेशन पॉइंट टोकन और रूट टोकन का इस्तेमाल करना
Geocoding API की मदद से, नेविगेशन पॉइंट टोकन पाया जा सकता है. वहीं, Routes API से रूट टोकन पाया जा सकता है. इसके बाद, नेविगेशन पॉइंट टोकन और रूट टोकन, दोनों को Navigation SDK में पास किया जा सकता है. यह राइडशेयर या डिलीवरी जैसे मामलों में काम आता है. इनमें ट्रिप की कीमत का हिसाब लगाने के लिए, Routes API का इस्तेमाल किया जाता है. साथ ही, आपको नेविगेशन पॉइंट टोकन की सटीक जानकारी चाहिए होती है.
रूट टोकन की वजह से, Navigation SDK से चुना गया रूट, कीमत तय करने के लिए इस्तेमाल किए गए रूट की ओर झुक जाता है. इससे ट्रिप के लिए लंबे या छोटे रूट इस्तेमाल होने का खतरा कम हो जाता है. इससे "कीमत में अचानक बढ़ोतरी" हो सकती है.
नेविगेशन पॉइंट टोकन का इस्तेमाल करके, किसी जगह को तय करने और रूट टोकन बनाने के बारे में ज़्यादा जानने के लिए, Routes API का दस्तावेज़ देखें. रूट टोकन का इस्तेमाल करके, रूट प्लान करने का तरीका जानने के लिए, "रूट प्लान करना" लेख पढ़ें.
इस डायग्राम में दिखाया गया है कि राइडशेयर या डिलीवरी ऐप्लिकेशन, नेविगेशन पॉइंट टोकन और रूट टोकन का इस्तेमाल एक साथ कैसे करेगा:
जगह का आईडी और जगह की जानकारी को एक साथ इस्तेमाल करना
वर्शन 10.10 से, वेपॉइंट बनाते समय, जगह का आईडी और जगह के निर्देशांक दोनों दिए जा सकते हैं. यह तरीका तब काम आता है, जब आपको सटीक पॉइंट (जगह) तय करना हो. साथ ही, पूरी जगह (जगह का आईडी) का कॉन्टेक्स्ट भी देना हो. इससे Navigation SDK, मंज़िल वाली बिल्डिंग को हाइलाइट करके या Place ID से जुड़ी आस-पास की जगहों को दिखाकर, बेहतर तरीके से मंज़िल तक पहुंचने का अनुभव दे सकता है.
Swift
// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),
placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
Objective-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];
इन बातों पर ध्यान दें:
जब placeID और location दोनों दिए जाते हैं, तो:
- रूट मुख्य तौर पर, तय की गई
locationको टारगेट करता है. - मंज़िल तक पहुंचने के अनुभव को बेहतर बनाने के लिए,
placeIdका इस्तेमाल कॉन्टेक्स्ट के तौर पर किया जाता है. - फ़ॉल बैक: अगर SDK को पता चलता है कि दिया गया
placeId, उस जगह से बहुत दूर है जिसके लिएlocationदी गई है, तोplaceIdको अनदेखा कर दिया जाएगा. इस मामले में, रूटिंग सिर्फ़locationके लिए होगी. साथ ही, जगह के हिसाब से मंज़िल तक पहुंचने के अनुभव को बेहतर बनाने वाली सुविधाएं उपलब्ध नहीं होंगी.
मान्य वेपॉइंट कॉन्फ़िगरेशन की खास जानकारी
| खास जानकारी | location |
placeID |
navigationPointToken |
रूटिंग का तरीका | मंज़िल को हाइलाइट करना |
|---|---|---|---|---|---|
| सिर्फ़ जगह के निर्देशांक | सेट करो | मौजूद नहीं है | मौजूद नहीं है | तय किए गए निर्देशांकों के सबसे नज़दीकी सड़क सेगमेंट के लिए रूट | अगर मंज़िल के बारे में सटीक जानकारी मिलती है, तो दिखाई जाती है |
| सिर्फ़ जगह का आईडी | मौजूद नहीं है | सेट करो | मौजूद नहीं है | जगह के आईडी के लिए डिफ़ॉल्ट नेविगेशन पॉइंट के लिए रूट | जगह के आईडी से |
| सिर्फ़ नेविगेशन पॉइंट टोकन | मौजूद नहीं है | मौजूद नहीं है | सेट करो | टोकन से दिखाए गए सटीक नेविगेशन पॉइंट के लिए रूट | Geocoding API के अनुरोध के ओरिजनल डेस्टिनेशन वाले तरीके में तय की गई मंज़िल से |
| जगह के निर्देशांक और जगह का आईडी एक साथ इस्तेमाल करना | se | सेट करो | मौजूद नहीं है | तय किए गए निर्देशांकों के सबसे नज़दीकी सड़क सेगमेंट के लिए रूट | जगह के आईडी से. हालांकि, अगर जगह का आईडी, अक्षांश/देशांतर के निर्देशांकों से बहुत दूर है, तो नहीं दिखाया जाता |