computeRoutes मेथड (REST) और ComputeRoutes मेथड (gRPC), दोनों ही रिस्पॉन्स के हिस्से के तौर पर, पॉलीलाइन से दिखाए गए रास्ते को दिखाते हैं. ये एपीआई दो तरह की पॉलीलाइन दिखाते हैं:
बुनियादी पॉलीलाइन (डिफ़ॉल्ट), किसी रास्ते को दिखाती है. हालांकि, इसमें पॉलीलाइन में एम्बेड की गई ट्रैफ़िक की जानकारी नहीं होती. बुनियादी पॉलीलाइन दिखाने वाले अनुरोधों के लिए, Routes के बुनियादी प्लान के हिसाब से शुल्क लिया जाता है. Routes API के लिए, बिलिंग के बारे में ज़्यादा जानें.
ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन में, रास्ते पर ट्रैफ़िक की स्थिति की जानकारी होती है. ट्रैफ़िक की स्थिति को, पॉलीलाइन के किसी दिए गए इंटरवल पर लागू होने वाली स्पीड कैटगरी (
NORMAL
,SLOW
,TRAFFIC_JAM
) के हिसाब से दिखाया जाता है. ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन के अनुरोधों के लिए, Routes की प्राथमिकता वाली दर पर शुल्क लिया जाता है. Routes API के लिए, बिलिंग के बारे में ज़्यादा जानें. ज़्यादा जानकारी के लिए, पॉलीलाइन की क्वालिटी कॉन्फ़िगर करना देखें
पॉलीलाइन के बारे में ज़्यादा जानने के लिए, यह लेख पढ़ें:
इंटरैक्टिव पॉलीलाइन एन्कोडर यूटिलिटी की मदद से, यूज़र इंटरफ़ेस (यूआई) में एन्कोड की गई पॉलीलाइन बनाई जा सकती हैं. इसके अलावा, मैप पर दिखाने के लिए पॉलीलाइन को डिकोड भी किया जा सकता है. उदाहरण के लिए, इस उपयोगिता का इस्तेमाल नीचे दिए गए कोड से बनाई गई पॉलीलाइन को डिकोड करने के लिए करें.
रास्ते, पैर या सीढ़ी के लिए बेसिक पॉलीलाइन का अनुरोध करें
पॉलीलाइन को Polyline (REST) या Polyline (gRPC) ऑब्जेक्ट से दिखाया जाता है. जवाब में, रास्ते, चरण, और कदम के लेवल पर पॉलीलाइन दिखाई जा सकती है.
रिस्पॉन्स फ़ील्ड मास्क का इस्तेमाल करके, यह तय करें कि कौनसी पॉलीलाइन दिखानी है:
रास्ते के लेवल पर, जवाब के जवाब में एक पॉलीलाइन दें. इसके लिए, रिस्पॉन्स फ़ील्ड मास्क में
routes.polyline
शामिल करें.लेग के लेवल पर, रास्ते के हर पैर के जवाब में एक पॉलीलाइन दिखाएं. इसके लिए,
routes.legs.polyline
को शामिल करें.कदम के लेवल पर, पैर के हर कदम के जवाब में एक पॉलीलाइन लौटाने के लिए
routes.legs.steps.polyline
को शामिल करें.
उदाहरण के लिए, पूरे रास्ते, हर चरण, और हर चरण के हर चरण के लिए पॉलीलाइन दिखाने के लिए:
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "travelMode": "DRIVE" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline,routes.legs.steps.polyline' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
इस अनुरोध से ये जवाब मिलता है जिसमें रास्ते की पॉलीलाइन, रास्ते के हर पैर के लिए, और पैर के हर कदम के लिए पॉलीलाइन शामिल है:
{ "routes": [ { "legs": [ { "polyline": { "encodedPolyline": "ipkcFfich...@Bs@?A?O?SD{A@o@B}@I?qA?_AA_@@_@?" } }, "steps": [ { "polyline": { "encodedPolyline": "kclcF...@sC@YIOKI" } }, { "polyline": { "encodedPolyline": "wblcF~...SZSF_@?" } }, ... ], "distanceMeters": 56901, "duration": "2420s", "polyline": { "encodedPolyline": "ipkcFfich...@Bs@?A?O?SD{A@o@B}@I?qA?_AA_@@_@?" } } ] }
इस अनुरोध में सिर्फ़ एक ऑरिजिन और डेस्टिनेशन है, इसलिए लौटाए गए रूट में सिर्फ़ एक लेग होता है. इसलिए, लेग और रास्ते के लिए पॉलीलाइन एक ही होती है.
अगर अनुरोध में कोई इंटरमीडिएट वेपॉइंट जोड़ा जाता है, तो दिखाए गए रास्ते में दो लेग होते हैं:
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "intermediates": [ { "address": "450 Serra Mall, Stanford, CA 94305, USA"}, ], "travelMode": "DRIVE", }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
इस अनुरोध से दो लेग मिलते हैं. हर लेग में एक यूनीक पॉलीलाइन होती है. साथ ही, पूरे रास्ते के लिए एक पॉलीलाइन मिलती है:
{ "routes": [ { "legs": [ { "polyline": { "encodedPolyline": "kclcFfqchV?A...?I@G?GAECCCEKICBAFG" } "steps": [ { "polyline": { "encodedPolyline": "kclcFfqch...YIOKI" } }, ... }, { "polyline": { "encodedPolyline": "ojmcFtethV?K...QOYQOGA?_@MUG[Ga@G" } "steps": [ { "polyline": { "encodedPolyline": "uypeFbo`jVgJq...PoBiC" } }, ... } ], "distanceMeters": 68403, "duration": "3759s", "polyline": { "encodedPolyline": "kclcFfqchV?A?CBKF[Ha...?GAECCCEKICBAFGJEBE" } } ] }
पॉलीलाइन की क्वालिटी
पॉलीलाइन की क्वालिटी के बारे में इन शब्दों में बताया जा सकता है:
पॉइंट का फ़्लोटिंग-पॉइंट कितना सटीक है
पॉइंट को अक्षांश और देशांतर की वैल्यू के तौर पर दिखाया जाता है. इन्हें सिंगल-प्रिसीज़न फ़्लोटिंग-पॉइंट फ़ॉर्मैट में दिखाया जाता है. यह छोटी वैल्यू के लिए अच्छी तरह से काम करता है, जिन्हें सटीक तरीके से दिखाया जा सकता है. हालांकि, वैल्यू बढ़ने पर सटीक जानकारी कम हो जाती है. इसकी वजह यह है कि फ़्लोटिंग-पॉइंट राउंडिंग की गड़बड़ियां होती हैं.
computeRoutes तरीके (REST) और ComputeRoutes में, इसे
polylineEncoding
से कंट्रोल किया जाता है.पॉलीलाइन बनाने वाले पॉइंट की संख्या
जितने ज़्यादा पॉइंट होंगे, उतनी ही बेहतर पॉलीलाइन बनेगी. खास तौर पर, घुमावदार हिस्सों में.
computeRoutes तरीके (REST) और ComputeRoutes में, इसे
polylineQuality
से कंट्रोल किया जाता है.
पॉलीलाइन एन्कोडिंग टाइप कॉन्फ़िगर करना
पॉलीलाइन टाइप को कंट्रोल करने के लिए, polylineEncoding
अनुरोध करने के विकल्प का इस्तेमाल करें.
polylineEncoding
प्रॉपर्टी यह कंट्रोल करती है कि पॉलीलाइन को ENCODED_POLYLINE
(डिफ़ॉल्ट) के तौर पर एन्कोड किया जाएगा या GEO_JSON_LINESTRING
के तौर पर. इसका मतलब है कि एन्कोड की गई पॉलीलाइन के लिए इस्तेमाल होने वाले एल्गोरिदम का फ़ॉर्मैट या GeoJSON लाइनस्ट्रिंग फ़ॉर्मैट का इस्तेमाल किया जाएगा.
उदाहरण के लिए, अनुरोध बॉडी में:
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "travelMode": "DRIVE", "polylineEncoding": "ENCODED_POLYLINE" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
पॉलीलाइन की क्वालिटी कॉन्फ़िगर करें
polylineQuality
, पॉलीलाइन की क्वालिटी को HIGH_QUALITY
या
OVERVIEW
(डिफ़ॉल्ट) के तौर पर बताता है. OVERVIEW
का इस्तेमाल करने पर, पॉलीलाइन को कुछ पॉइंट का इस्तेमाल करके बनाया जाता है. साथ ही, HIGH_QUALITY
की तुलना में अनुरोध में लगने वाला समय कम होता है.
उदाहरण के लिए, अनुरोध के मुख्य हिस्से में:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE", "polylineQuality": "HIGH_QUALITY", "polylineEncoding": "ENCODED_POLYLINE", "departureTime": "2023-10-15T15:01:23.045123456Z", ... }
ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन का अनुरोध करना
ऊपर दिखाए गए सभी उदाहरण बुनियादी पॉलीलाइन देते हैं, जिनका मतलब है बिना ट्रैफ़िक की जानकारी वाली पॉलीलाइन. इसके अलावा, आपके पास यह अनुरोध करने का विकल्प भी है कि पॉलीलाइन में, रास्ते और रास्ते के हर चरण के लिए ट्रैफ़िक की जानकारी शामिल हो.
ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन में, रास्ते पर ट्रैफ़िक के हाल की जानकारी होती है. ट्रैफ़िक की स्थिति को, रिस्पॉन्स वाली पॉलीलाइन के किसी दिए गए इंटरवल के लिए, स्पीड कैटगरी (NORMAL
, SLOW
, TRAFFIC_JAM
) के हिसाब से दिखाया जाता है. इंटरवल को उनके शुरुआती (शामिल) और आखिरी (खास) पॉलीलाइन पॉइंट के इंडेक्स से तय किया जाता है.
उदाहरण के लिए, नीचे दिए गए रिस्पॉन्स में पॉलीलाइन के पॉइंट 2 और 4 के बीच का NORMAL
ट्रैफ़िक दिखाया गया है:
{ "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" }
ट्रैफ़िक के हिसाब से पॉलीलाइन का हिसाब लगाने का अनुरोध करने के लिए, अनुरोध में ये प्रॉपर्टी सेट करें:
ट्रैफ़िक का हिसाब लगाने की सुविधा चालू करने के लिए,
extraComputations
कलेक्शन फ़ील्ड कोTRAFFIC_ON_POLYLINE
पर सेट करें.travelMode
कोDRIVE
याTWO_WHEELER
पर सेट करें. किसी अन्य ट्रैवल मोड के लिए किए गए अनुरोधों में गड़बड़ी दिखती है.अनुरोध में
TRAFFIC_AWARE
याTRAFFIC_AWARE_OPTIMAL
रूटिंग प्राथमिकता बताएं. ज़्यादा जानकारी के लिए, क्वालिटी बनाम रिस्पॉन्स टाइम कॉन्फ़िगर करना लेख पढ़ें.रिस्पॉन्स फ़ील्ड का ऐसा मास्क सेट करें जो रिस्पॉन्स प्रॉपर्टी दिखाता हो:
रास्ते के लेवल पर, जवाब में यात्रा की पूरी जानकारी दें. इसके लिए, जवाब फ़ील्ड मास्क में
routes.travelAdvisory
शामिल करें. सिर्फ़ ट्रैफ़िक की जानकारी देखने के लिए,routes.travelAdvisory.speedReadingIntervals
पहले से तय किए गए रास्ते के हर चरण के लिए,
routes.legs.travelAdvisory
को शामिल करके, जवाब में यात्रा की पूरी जानकारी दें. सिर्फ़ ट्रैफ़िक की जानकारी देखने के लिए,routes.legs.travelAdvisory.speedReadingIntervals
डालें.
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "travelMode": "DRIVE", "extraComputations": ["TRAFFIC_ON_POLYLINE"], "routingPreference": "TRAFFIC_AWARE_OPTIMAL" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline,routes.travelAdvisory,routes.legs.travelAdvisory' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
ट्रैफ़िक के हिसाब से बदलने वाली पॉलीलाइन के लिए रिस्पॉन्स का उदाहरण
रिस्पॉन्स में, ट्रैफ़िक डेटा को पॉलीलाइन में कोड किया गया है. यह travelAdvisory
फ़ील्ड में होता है, जो RouteLegTravelAdvisory ऑब्जेक्ट (हर लेग) और RouteTravelAdvisory ऑब्जेक्ट (रास्ता) टाइप का होता है.
उदाहरण के लिए:
{ "routes": [ { "legs": { "polyline": { "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD" }, // Traffic data for the leg. "travelAdvisory": { "speedReadingIntervals": [ { "endPolylinePointIndex": 1, "speed": "NORMAL" }, { "startPolylinePointIndex": 1, "endPolylinePointIndex": 2, "speed": "SLOW" }, { "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" } ] } }, "polyline": { "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD" }, // Traffic data for the route. "travelAdvisory": { "speedReadingIntervals": [ { "endPolylinePointIndex": 1, "speed": "NORMAL" }, { "startPolylinePointIndex": 1, "endPolylinePointIndex": 2, "speed": "SLOW" }, { "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" } ] } } ] }
RouteTravelAdvisory
और RouteLegTravelAdvisory
, दोनों में एक ऐरे फ़ील्ड होता है, जिसे speedReadingIntervals
कहा जाता है. इसमें ट्रैफ़िक की रफ़्तार की जानकारी होती है. कलेक्शन में मौजूद हर ऑब्जेक्ट को SpeedReadingInterval (REST) या SpeedReadingInterval (gRPC) ऑब्जेक्ट से दिखाया जाता है.
SpeedReadingInterval
ऑब्जेक्ट में, रास्ते के किसी इंटरवल के लिए रफ़्तार की जानकारी शामिल होती है. जैसे, NORMAL
, SLOW
या TRAFFIC_JAM
. ऑब्जेक्ट का पूरा कलेक्शन, ओवरलैप किए बिना, रास्ते की पूरी पॉलीलाइन को कवर करता है. किसी तय इंटरवल का शुरुआती पॉइंट
और पिछले इंटरवल का आखिरी पॉइंट एक ही होता है.
हर इंटरवल को उसके startPolylinePointIndex
,
endPolylinePointIndex
, और उससे जुड़ी स्पीड कैटगरी से दिखाया जाता है.
ध्यान दें कि इंटरवल में स्टार्ट इंडेक्स की कमी, प्रोटो3 तरीके के हिसाब से इंडेक्स 0 है.
startPolylinePointIndex
और endPolylinePointIndex
वैल्यू हमेशा
क्रम में नहीं होती हैं. उदाहरण के लिए:
{ "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" }
इस मामले में, इंडेक्स 2 से इंडेक्स 4 तक ट्रैफ़िक की स्थिति एक जैसी थी.
Maps SDK टूल की मदद से, ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन रेंडर करना
हमारा सुझाव है कि आप Google Maps SDK टूल की दी गई अलग-अलग सुविधाओं का इस्तेमाल करके, मैप पर ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन दिखाएं. इन सुविधाओं में, पॉलीलाइन के हिस्सों के साथ कस्टम रंग, स्ट्रोक, और पैटर्न शामिल हैं. पॉलीलाइन के इस्तेमाल से जुड़ी ज़्यादा जानकारी के लिए, Android के लिए पॉलीलाइन फ़ीचर और iOS के लिए पॉलीलाइन फ़ीचर देखें.
पॉलीलाइन रेंडरिंग का उदाहरण
Maps SDK टूल के उपयोगकर्ताओं के पास, स्पीड कैटगरी और पॉलीलाइन रेंडरिंग स्कीमा के बीच पसंद के मुताबिक मैपिंग लॉजिक तय करने का विकल्प होता है. उदाहरण के लिए, "सामान्य" स्पीड को मैप पर मोटी नीली लाइन के तौर पर दिखाया जा सकता है, जबकि "धीमी" स्पीड को मोटी नारंगी लाइन के तौर पर दिखाया जा सकता है.
यहां दिए गए स्निपेट, मेलबर्न से पर्थ तक के जियोडेसिक सेगमेंट के साथ एक मोटी नीली पॉलीलाइन जोड़ते हैं. ज़्यादा जानकारी के लिए, Android के लिए दिखने का तरीका पसंद के मुताबिक बनाना और iOS के लिए पॉलीलाइन को पसंद के मुताबिक बनाना लेख पढ़ें.
Android
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734)) .width(25) .color(Color.BLUE) .geodesic(true));
Kotlin
val line: Polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
iOS
Objective-C
GMSMutablePath *path = [GMSMutablePath path]; [path addLatitude:-37.81319 longitude:144.96298]; [path addLatitude:-31.95285 longitude:115.85734]; GMSPolyline *polyline = [GMSPolyline polylineWithPath:path]; polyline.strokeWidth = 10.f; polyline.strokeColor = .blue; polyline.geodesic = YES; polyline.map = mapView;
Swift
let path = GMSMutablePath() path.addLatitude(-37.81319, longitude: 144.96298) path.addLatitude(-31.95285, longitude: 115.85734) let polyline = GMSPolyline(path: path) polyline.strokeWidth = 10.0 polyline.geodesic = true polyline.map = mapView