रास्ते के विकल्पों की सुविधा में, वेपॉइंट ऑप्टिमाइज़ेशन की सुविधा भी शामिल है. यह सुविधा, ComputeRoutes
तक उपलब्ध है.
यह किसी यात्री के रास्ते में पड़ने वाले बीच के वेपॉइंट के क्रम को ऑप्टिमाइज़ करता है. इससे यह पक्का किया जाता है कि यात्री सबसे सही रास्ते से यात्रा कर सके. ComputeRoutes
वेहनों के रास्ते को ऑप्टिमाइज़ करने की सुविधा, यात्रा के इन मोड के साथ काम करती है:
- ड्राइविंग
- मोटरसाइकल चलाना
- साइकलिंग
- पैदल
वेपॉइंट ऑप्टिमाइज़ेशन का इस्तेमाल क्यों करना चाहिए?
किसी ऐप्लिकेशन को बनाते समय, यह ज़रूरी है कि वह उपयोगकर्ताओं को किसी डेस्टिनेशन के रास्ते में मौजूद कई वेपॉइंट के ज़रिए गाइड करे. साथ ही, यह भी ज़रूरी है कि यात्री वेपॉइंट को सबसे सही क्रम में पार करे. इससे यह पक्का होता है कि यात्री कम से कम समय में हर वेपॉइंट पर पहुंच जाए.
यह कैसे काम करता है
डिफ़ॉल्ट रूप से, ComputeRoutes
अपने वेपॉइंट के ज़रिए रास्ते का हिसाब लगाता है. यह हिसाब, वेपॉइंट के उसी क्रम में लगाया जाता है जिसमें वे मूल रूप से दिए गए थे. ComputeRoutes
की मदद से, रास्ते को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, रास्ते के बीच में मौजूद वे पॉइंट फिर से व्यवस्थित करें, ताकि वे रास्ते के हिसाब से सही क्रम में हों.
अनुरोध के मुख्य हिस्से में optimizeWaypointOrder
फ़ील्ड को true
पर सेट करने पर, आपको ऑप्टिमाइज़ किए गए वेपॉइंट वाला रूट मिलेगा.
ध्यान दें: रास्ते के बीच पड़ने वाले पॉइंट को ऑप्टिमाइज़ करने का हिसाब, मुख्य रूप से यात्रा में लगने वाले समय के आधार पर लगाया जाता है. हालांकि, इस सुविधा में दूरी और मुड़ने की संख्या जैसी अन्य चीज़ों को भी ध्यान में रखा जाता है.
रीऑर्डर किए गए वे पॉइंट पाना
क्रम में बदले गए वेपॉइंट वाला रास्ता पाने के लिए, अनुरोध के मुख्य हिस्से में मौजूद बोलियन फ़ील्ड optimizeWaypointOrder
को true
पर सेट करें.ComputeRoutes
साथ ही, फ़ील्ड मास्क में फ़ील्ड optimizedIntermediateWaypointIndex
को भी शामिल करें. जवाब के मुख्य हिस्से में, optimizedIntermediateWaypointIndex
फ़ील्ड में ऑप्टिमाइज़ किए गए रास्ते के पड़ावों का क्रम होता है.
ध्यान दें: optimizedIntermediateWaypointIndex
फ़ील्ड, शून्य पर आधारित वैल्यू दिखाता है.
अनुरोध का उदाहरण
यहां दिए गए उदाहरण में, स्टैनफ़र्ड यूनिवर्सिटी कैंपस के आस-पास का रास्ता दिखाया गया है. अनुरोध में, रास्ते के वे पॉइंट क्रम से दिए गए हैं. अनुरोध में, यात्रा शुरू करने की जगह और मंज़िल के साथ-साथ, दो इंटरमीडिएट वॉयपॉइंट शामिल हैं.
POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
"origin":{
"location":{
"latLng":{
"latitude": 37.418956,
"longitude": -122.160815
}
}
},
"intermediates": [
{
"location":{
"latLng":{
"latitude": 37.4176423,
"longitude":-122.1102246
}
}
},
{
"location":{
"latLng":{
"latitude": 37.407689,
"longitude": -122.1360597
}
}
}
],
"destination":{
"location":{
"latLng":{
"latitude": 37.4032137,
"longitude": -122.0349119
}
}
},
"travelMode": "DRIVE",
"optimizeWaypointOrder": true,
"routingPreference": "TRAFFIC_AWARE"}
जवाब का उदाहरण
आपको जवाब के मुख्य हिस्से में, रास्ते के ऑब्जेक्ट में optimizedIntermediateWaypointIndex
फ़ील्ड में, फिर से व्यवस्थित किए गए इंटरमीडिएट वेपॉइंट इंडेक्स मिल सकते हैं. एन्कोड की गई पॉलीलाइन, Directions API और ComputeRoutes में मौजूद पॉलीलाइन जैसी ही होती है.
routes {
distance_meters: 17647
duration {
seconds: 1866
}
polyline {
encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
}
optimizedIntermediateWaypointIndex: 1
optimizedIntermediateWaypointIndex: 0
}
इस उदाहरण में, ध्यान दें कि व्यूपॉइंट को ऑप्टिमाइज़ करने पर, उनके मूल क्रम में बदलाव हो जाता है.
सुझाए गए तरीके
ऑप्टिमाइज़ किए गए रास्ते के अनुरोध को प्रोसेस करने में, सामान्य रास्ते के अनुरोध से ज़्यादा समय लगता है. इसलिए, हमारा सुझाव है कि आप X-Server-Timeout
अनुरोध हेडर की वैल्यू को कम से कम 10 सेकंड पर सेट करके, मेथड कॉल पर ज़्यादा टाइम आउट सेट करें. अगर आपको टाइम आउट की गड़बड़ियां मिलती रहती हैं, तो एक सेकंड और जोड़ें और फिर से कोशिश करें.
इस्तेमाल करने की सीमाएं
वेपॉइंट ऑप्टिमाइज़ेशन का इस्तेमाल करने के लिए, आपको इस्तेमाल से जुड़ी इन सीमाओं और शर्तों का पालन करना होगा:
अपने रास्ते पर, बीच में मौजूद वे पॉइंट जिनका इस्तेमाल किया जा सकता है उनकी संख्या तय की जा सकती है:
- सिर्फ़ अक्षांश और देशांतर निर्देशांक का इस्तेमाल करके, ज़्यादा से ज़्यादा 98 वॉइसपॉइंट.
- अगर जगह के आईडी का इस्तेमाल करके कोई वेपॉइंट तय किया जाता है, तो ज़्यादा से ज़्यादा 25 वेपॉइंट.
आपके सभी वेस्टपॉइंट, स्टॉपओवर टाइप के होने चाहिए. आपके किसी भी रास्ते का टाइप via नहीं हो सकता.
आपको फ़ील्ड मास्क में
routes.optimizedIntermediateWaypointIndex
जोड़ना होगा.अगर आपके अनुरोध में 25 या उससे ज़्यादा इंटरमीडिएट वेपॉइंट हैं, तो उसे इन शर्तों का भी पालन करना होगा:
सभी व्यू पॉइंट के बीच की सीधी दूरी 1,000 किलोमीटर से कम होनी चाहिए. इस दूरी में, यात्रा शुरू करने की जगह और मंज़िल, दोनों शामिल हैं.
यात्रा का मोड, ड्राइव होना चाहिए.