पॉलीलाइन एन्कोडिंग एक लॉस कंप्रेशन एल्गोरिदम है. इससे आपको कई तरह के कोऑर्डिनेट को स्टोर करने की सुविधा मिलती है, जैसे कि रूट को एक स्ट्रिंग के तौर पर सेव करना. कोड में बदलने का तरीका, base64 एन्कोडिंग स्कीम का इस्तेमाल करके, ASCII वर्णों के लिए एक बाइनरी वैल्यू को वर्ण कोड की सीरीज़ में बदल देता है. कोड में बदलने की प्रोसेस की पूरी जानकारी के लिए, एन्कोड किया गया पॉलीलाइन एल्गोरिदम फ़ॉर्मैट देखें.
ComputeRoutes के तरीके (REST) और ComputeRoutes तरीके (gRPC) ही, दोनों ही रिस्पॉन्स के तौर पर पॉलीलाइन से दिखाए गए रूट के बारे में जानकारी देते हैं. ये एपीआई दो तरह की पॉलीलाइन दिखाते हैं:
बेसिक पॉलीलाइन (डिफ़ॉल्ट), रूट को दिखाती है, लेकिन पॉलीलाइन में ट्रैफ़िक की जानकारी नहीं होती. बेसिक पॉलीलाइन दिखाने वाले अनुरोधों की बिलिंग रूट बेसिक कीमत पर की जाती है. Routes API के लिए बिलिंग के बारे में ज़्यादा जानें.
ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन में रास्ते के साथ-साथ ट्रैफ़िक की स्थितियों की जानकारी होती है. ट्रैफ़िक की स्थितियों को पॉलीलाइन के दिए गए इंटरवल पर लागू स्पीड कैटगरी (
NORMAL
,SLOW
,TRAFFIC_JAM
) के तौर पर दिखाया जाता है. ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन के अनुरोधों की बिलिंग, रूट की पसंदीदा दर पर की जाती है. रूट एपीआई की बिलिंग के बारे में ज़्यादा जानें. ज़्यादा जानकारी के लिए, पॉलीलाइन क्वालिटी कॉन्फ़िगर करना लेख पढ़ें
पॉलीलाइन के बारे में ज़्यादा जानकारी के लिए, यह देखें:
- पॉलीलाइन की क्वालिटी कॉन्फ़िगर करने से जुड़ी जानकारी के लिए, क्वालिटी और इंतज़ार के समय को कॉन्फ़िगर करें.
- कोड में बदला गया पॉलीलाइन एल्गोरिदम फ़ॉर्मैट, पॉलीलाइन को कोड में बदलने के लिए एल्गोरिदम के बारे में बताता है.
इंटरैक्टिव पॉलीलाइन एन्कोडर यूटिलिटी की मदद से, यूज़र इंटरफ़ेस (यूआई) में एन्कोड की गई पॉलीलाइन बनाई जा सकती हैं. इसके अलावा, मैप पर दिखाने के लिए पॉलीलाइन को डिकोड किया जा सकता है. उदाहरण के लिए, नीचे दिए गए कोड से बनी पॉलीलाइन को डिकोड करने के लिए इस सुविधा का इस्तेमाल करें.
रास्ते, पैर या कदम के लिए सामान्य पॉलीलाइन का अनुरोध करें
पॉलीलाइन को पॉलीलाइन (REST) या पॉलीलाइन (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" } } ] }
पॉलीलाइन एन्कोडिंग प्रकार कॉन्फ़िगर करें
पॉलीलाइन टाइप को कंट्रोल करने के लिए, polylineEncoding
अनुरोध के विकल्प का इस्तेमाल करें.
polylineEncoding
प्रॉपर्टी से पता चलता है कि पॉलीलाइन को इनमें से किसी एक तरीके से कोड में कैसे बदला जाए
ENCODED_POLYLINE
(डिफ़ॉल्ट). इसका मतलब है कि पॉलीलाइन एन्कोडिंग एल्गोरिदम का इस्तेमाल करें या
GEO_JSON_LINESTRING
, जिसका मतलब है कि GeoJSON LineString फ़ॉर्मैट का इस्तेमाल करें.
उदाहरण के लिए: अनुरोध के मुख्य भाग में:
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'
ट्रैफ़िक की जानकारी देने वाले पॉलीलाइन का अनुरोध करें
सभी के ऊपर दिखाए गए उदाहरण, बुनियादी पॉलीलाइन दिखाते हैं, यानी कि ट्रैफ़िक की जानकारी के बिना पॉलीलाइन. इसके अलावा, आप यह भी अनुरोध कर सकते हैं कि पॉलीलाइन में रास्ते और रास्ते की हर मोड़ के लिए ट्रैफ़िक की जानकारी शामिल हो.
ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन में रास्ते में पड़ने वाले ट्रैफ़िक की स्थिति की जानकारी होती है. ट्रैफ़िक की स्थितियों को रिस्पॉन्स पॉलीलाइन के दिए गए इंटरवल के लिए स्पीड कैटगरी (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'
ट्रैफ़िक की जानकारी देने वाली पॉलीलाइन के जवाब का उदाहरण
इस रिस्पॉन्स में, ट्रैफ़िक डेटा को पॉलीलाइन में एन्कोड किया जाता है. साथ ही, यह RouteLegTravelAdvisory
ऑब्जेक्ट (हर लेग) और
RouteTravelAdvisory ऑब्जेक्ट (रूट) टाइप के travelAdvisory
फ़ील्ड में शामिल होता है.
उदाहरण के लिए:
{ "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
, और उससे जुड़ी स्पीड की कैटगरी से दी जाती है.
ध्यान दें कि इस इंटरवल में स्टार्ट इंडेक्स की कमी, इंडेक्स 0 से मेल खाती है. यह इंडेक्स proto3 के तरीकों के हिसाब से तय किया जाता है.
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