ComputeRoutes পদ্ধতি (REST) এবং ComputeRoutes পদ্ধতি (gRPC) উভয়ই প্রতিক্রিয়ার অংশ হিসাবে একটি পলিলাইন দ্বারা উপস্থাপিত রুট ফিরিয়ে দেয়। এই APIগুলি দুটি ধরণের পলিলাইন প্রদান করে:
বেসিক পলিলাইন (ডিফল্ট) , একটি রুট উপস্থাপন করে কিন্তু পলিলাইনে এম্বেড করা ট্রাফিক তথ্য ছাড়াই। যে অনুরোধগুলি একটি মৌলিক পলিলাইন ফেরত দেয় সেগুলি রুট বেসিক হারে বিল করা হয়৷ রুট API-এর জন্য বিলিং সম্পর্কে আরও জানুন ।
ট্রাফিক-সচেতন পলিলাইন , রুট বরাবর ট্র্যাফিক অবস্থা সম্পর্কে তথ্য ধারণ করে। পলিলাইনের একটি প্রদত্ত ব্যবধানে প্রযোজ্য গতি বিভাগের (
NORMAL
,SLOW
,TRAFFIC_JAM
) পরিপ্রেক্ষিতে ট্র্যাফিক পরিস্থিতি প্রকাশ করা হয়৷ ট্রাফিক-সচেতন পলিলাইনের জন্য অনুরোধ রুট পছন্দের হারে বিল করা হয়। রুট API-এর জন্য বিলিং সম্পর্কে আরও জানুন । বিস্তারিত জানার জন্য, পলিলাইন মান কনফিগার করুন দেখুন
পলিলাইন সম্পর্কে আরও জানতে, দেখুন:
ইন্টারেক্টিভ পলিলাইন এনকোডার ইউটিলিটি আপনাকে একটি UI-তে এনকোড করা পলিলাইন তৈরি করতে দেয় বা মানচিত্রে প্রদর্শন করতে পলিলাইন ডিকোড করতে দেয়। উদাহরণস্বরূপ, নীচের কোড দ্বারা তৈরি একটি পলিলাইন ডিকোড করতে এই ইউটিলিটিটি ব্যবহার করুন।
একটি রুট, পা বা ধাপের জন্য একটি মৌলিক পলিলাইন অনুরোধ করুন
একটি পলিলাইন একটি পলিলাইন (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" } } ] }
পলিলাইন গুণমান
একটি পলিলাইনের গুণমান নিম্নলিখিত পদে বর্ণনা করা যেতে পারে:
পয়েন্টের ফ্লোটিং-পয়েন্ট নির্ভুলতা
পয়েন্টগুলি অক্ষাংশ এবং দ্রাঘিমাংশের মান হিসাবে নির্দিষ্ট করা হয়, যা একক-নির্ভুল ফ্লোটিং-পয়েন্ট বিন্যাসে উপস্থাপিত হয়। এটি ছোট মানগুলির জন্য ভাল কাজ করে (যা সুনির্দিষ্টভাবে উপস্থাপন করা যেতে পারে), তবে ফ্লোটিং-পয়েন্ট রাউন্ডিং ত্রুটির কারণে মান বৃদ্ধির সাথে সাথে নির্ভুলতা হ্রাস পায়।
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
এ সেট করুন৷DRIVE
বাTWO_WHEELER
এtravelMode
সেট করুন। অন্য কোনো ভ্রমণ মোডের জন্য অনুরোধ একটি ত্রুটি ফেরত.অনুরোধে হয়
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 পর্যন্ত একই ছিল।
মানচিত্র SDK এর সাথে ট্রাফিক-সচেতন পলিলাইন রেন্ডার করুন
কাস্টম রঙ, স্ট্রোক এবং পলিলাইন স্ট্রেচ বরাবর প্যাটার্ন সহ Google মানচিত্র SDK-এর দেওয়া বিভিন্ন বৈশিষ্ট্যগুলি ব্যবহার করে আমরা মানচিত্রে ট্র্যাফিক সচেতন পলিলাইনগুলি প্রদর্শন করার সুপারিশ করি৷ পলিলাইন ব্যবহার সম্পর্কে আরও বিস্তারিত জানার জন্য, অ্যান্ড্রয়েডের জন্য পলিলাইন বৈশিষ্ট্য এবং iOS-এর জন্য পলিলাইন বৈশিষ্ট্যগুলি দেখুন৷
উদাহরণ পলিলাইন রেন্ডারিং
মানচিত্র SDK ব্যবহারকারীদের গতি বিভাগ এবং পলিলাইন রেন্ডারিং স্কিমাগুলির মধ্যে একটি কাস্টমাইজড ম্যাপিং যুক্তি সংজ্ঞায়িত করার সুযোগ রয়েছে৷ উদাহরণ স্বরূপ, কেউ মানচিত্রে "সাধারণ" গতি একটি ঘন নীল রেখা হিসাবে প্রদর্শন করার সিদ্ধান্ত নিতে পারে যখন "ধীর" গতি একটি ঘন কমলা রেখা হিসাবে প্রদর্শিত হতে পারে, উদাহরণস্বরূপ।
নিম্নলিখিত স্নিপেটগুলি মেলবোর্ন থেকে পার্থ পর্যন্ত জিওডেসিক অংশগুলির সাথে একটি ঘন নীল পলিলাইন যুক্ত করে। আরও তথ্যের জন্য, উপস্থিতি কাস্টমাইজ করা (অ্যান্ড্রয়েডের জন্য) এবং পলিলাইন কাস্টমাইজ করুন (iOS-এর জন্য) দেখুন।
অ্যান্ড্রয়েড
জাভা
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));
কোটলিন
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
উদ্দেশ্য-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;
সুইফট
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