Distance Matrix Service

ইউরোপীয় অর্থনৈতিক অঞ্চল (EEA)-এর ডেভেলপার
মনে রাখবেন: সার্ভার-সাইড লাইব্রেরি

এক নজরে

Google-এর Distance Matrix পরিষেবা, ভ্রমণের প্রদত্ত মোড ব্যবহার করে একাধিক যাত্রা শুরুর স্থান ও গন্তব্যের মধ্যে ভ্রমণের দূরত্ব ও যাত্রার সময় হিসেব করে।

এই পরিষেবা বিস্তারিত রুট সংক্রান্ত তথ্য দেয় না। পলিলাইন ও টেক্সচুয়াল দিকনির্দেশ সহ রুটের তথ্য পেতে, কাঙ্খিত সিঙ্গেল অরিজিন ও ডেস্টিনেশনকে Directions Service-এ পাস করতে হবে।

শুরু করা

Maps JavaScript API-তে Distance Matrix পরিষেবা ব্যবহার করার আগে, Maps JavaScript API-এর জন্য আপনি যে প্রোজেক্ট সেট-আপ করেছেন, সেটিতে Google Cloud Console-এ Distance Matrix API (Legacy) চালু আছে কিনা তা নিশ্চিত করুন।

চালু করা API-এর তালিকা দেখতে:

  1. Google Cloud console-এ যান।
  2. একটি প্রোজেক্ট বেছে নিন বোতামে ক্লিক করুন, তারপর Maps JavaScript API-এর জন্য আপনি যে প্রোজেক্ট সেট-আপ করেছেন সেটি বেছে নিয়ে খুলুন বিকল্পে ক্লিক করুন।
  3. ড্যাশবোর্ডে API-এর তালিকা থেকে, Distance Matrix API (Legacy) খুঁজে দেখুন।
  4. আপনি তালিকায় API দেখতে পেলে, সব সেট-আপ করা হয়ে গেছে। API তালিকাভুক্ত না থাকলে, এটি থেকে চালু করুন: https://console.cloud.google.com/apis/library/distance-matrix-backend.googleapis.com

দাম ও নীতি

দাম

JavaScript Distance Matrix পরিষেবার দাম ও ব্যবহার সংক্রান্ত নীতি সম্পর্কে জানতে, Distance Matrix API (Legacy)-এর ব্যবহার ও বিলিং দেখুন।

মনে রাখবেন: Distance Matrix পরিষেবায় পাঠানো প্রতিটি কোয়েরি অনুমোদিত এলিমেন্টের সংখ্যা দ্বারা সীমিত থাকে, যেখানে যাত্রা শুরুর স্থান-এর সংখ্যাকে গন্তব্যের সংখ্যা দিয়ে গুণ করে এলিমেন্টের সংখ্যা নির্ধারণ করা হয়।

নীতি

Distance Matrix পরিষেবা ব্যবহার করার সময় Distance Matrix API (Legacy)-এর জন্য বর্ণিত নীতি মেনে চলতে হবে।

Distance Matrix সংক্রান্ত অনুরোধ

Distance Matrix পরিষেবা অ্যাক্সেস করা হল অ্যাসিঙ্ক্রোনাস, কারণ Google Maps API-কে একটি এক্সটার্নাল সার্ভারে কল করতে হয়। সেই কারণে, ফলাফল প্রসেস করার জন্য, অনুরোধ সম্পূর্ণ হলে এক্সিকিউট করার জন্য আপনাকে একটি কলব্যাক পদ্ধতি পাস করতে হবে।

আপনি google.maps.DistanceMatrixService কনস্ট্রাক্টর অবজেক্টের মাধ্যমে আপনার কোডের মধ্যে Distance Matrix পরিষেবা অ্যাক্সেস করেন। DistanceMatrixService.getDistanceMatrix() পদ্ধতি Distance Matrix পরিষেবার কাছে একটি অনুরোধ পাঠায়, এর মধ্যে DistanceMatrixRequest অবজেক্ট লিটেরাল থাকে যাতে সোর্স, ডেস্টিনেশন ও ভ্রমণের মোড থাকে। এছাড়াও, উত্তর পাওয়ার পরে কলব্যাক পদ্ধতি এক্সিকিউট করা হয়।

var origin1 = new google.maps.LatLng(55.930385, -3.118425);
var origin2 = 'Greenwich, England';
var destinationA = 'Stockholm, Sweden';
var destinationB = new google.maps.LatLng(50.087692, 14.421150);

var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
  {
    origins: [origin1, origin2],
    destinations: [destinationA, destinationB],
    travelMode: 'DRIVING',
    transitOptions: TransitOptions,
    drivingOptions: DrivingOptions,
    unitSystem: UnitSystem,
    avoidHighways: Boolean,
    avoidTolls: Boolean,
  }, callback);

function callback(response, status) {
  // See Parsing the Results for
  // the basics of a callback function.
}

উদাহরণ দেখুন

DistanceMatrixRequest-এ নিম্নলিখিত ফিল্ড রয়েছে:

  • origins (প্রয়োজনীয়) — একটি বা একাধিক ঠিকানার স্ট্রিং, google.maps.LatLng অবজেক্ট বা প্লেস অবজেক্ট সহ একটি অ্যারে যেখান থেকে দূরত্ব ও সময় গণনা করতে হবে।
  • destinations (প্রয়োজনীয়) — একটি অ্যারে যাতে একটি বা তার বেশি অ্যাড্রেস স্ট্রিং, google.maps.LatLng অবজেক্ট বা প্লেস অবজেক্ট থাকে, যেগুলির দূরত্ব ও সময় গণনা করতে হবে।
  • travelMode (ঐচ্ছিক) — দিকনির্দেশ গণনা করার সময় ব্যবহার করার জন্য পরিবহনের মোড। ভ্রমণের মোড বিভাগটি দেখুন।
  • transitOptions (ঐচ্ছিক) — বিকল্প যা শুধুমাত্র সেইসব অনুরোধের ক্ষেত্রে প্রযোজ্য যেখানে travelMode হল TRANSIT. ট্রানজিট বিকল্প বিভাগে সঠিক ভ্যালু সম্পর্কে বর্ণনা দেওয়া আছে।
  • drivingOptions (ঐচ্ছিক) এমন ভ্যালু নির্দিষ্ট করে যা শুধুমাত্র সেইসব অনুরোধের ক্ষেত্রে প্রযোজ্য যেখানে travelMode হল DRIVING. ড্রাইভিং বিকল্প বিভাগে সঠিক ভ্যালু সম্পর্কে বর্ণনা করা আছে।
  • unitSystem (ঐচ্ছিক) — দূরত্ব দেখানোর সময় ব্যবহার করার জন্য ইউনিট সিস্টেম। স্বীকৃত মান হল:
    • google.maps.UnitSystem.METRIC (ডিফল্ট)
    • google.maps.UnitSystem.IMPERIAL
  • avoidHighways (ঐচ্ছিক) — যদি true হয়, তাহলে অরিজিন ও ডেস্টিনেশনের মধ্যে রুট গণনা করা হবে যাতে সম্ভব হলে হাইওয়ে এড়ানো যায়।
  • avoidTolls (ঐচ্ছিক) — যদি true হয়, তাহলে পয়েন্টের মধ্যে দিকনির্দেশ গণনা করার জন্য টোল না থাকা রুট ব্যবহার করা হবে, যেখানেই সম্ভব।

ভ্রমণের মোড

সময় ও দূরত্ব হিসেব করার সময়, কোন পরিবহন মোড ব্যবহার করতে হবে তা আপনি নির্দিষ্ট করতে পারবেন। বর্তমানে নিম্নলিখিত ট্রাভেল মোড কাজ করে:

  • BICYCLING অনুরোধ সাইকেল চালানোর রাস্তা ও পছন্দের রাস্তার মাধ্যমে সাইকেল চালানোর দিকনির্দেশ (বর্তমানে শুধুমাত্র মার্কিন যুক্তরাষ্ট্র ও কানাডার কয়েকটি শহরে উপলভ্য)।
  • DRIVING (ডিফল্ট) রাস্তার নেটওয়ার্ক ব্যবহার করে স্ট্যান্ডার্ড ড্রাইভিং নির্দেশাবলী নির্দেশ করে।
  • TRANSIT পাবলিক ট্রানজিট রুট ব্যবহার করে দিকনির্দেশের অনুরোধ করে। অনুরোধে API কী থাকলে তবেই এই বিকল্প উল্লেখ করা যায়। এই ধরনের অনুরোধের ক্ষেত্রে উপলভ্য বিকল্পের জন্য ট্রানজিট বিকল্প বিভাগটি দেখুন।
  • WALKING অনুরোধ পথচারীদের রাস্তা ও ফুটপাথ (যেখানে উপলভ্য) ধরে হাঁটার দিকনির্দেশ।

ট্রানজিট বিকল্প

ট্রানজিট পরিষেবা বর্তমানে 'পরীক্ষামূলক' পর্যায়ে আছে। এই পর্যায়ে, API-এর অপব্যবহার রোধ করতে আমরা রেট লিমিট প্রয়োগ করব। আমরা API-এর ন্যায্য ব্যবহারের উপর ভিত্তি করে, প্রতিটি ম্যাপ লোডের জন্য মোট কোয়েরির উপর অবশেষে একটি সীমা আরোপ করব।

ডিস্ট্যান্স ম্যাট্রিক্স সংক্রান্ত অনুরোধের জন্য উপলভ্য বিকল্পগুলি ভ্রমণ মোড জুড়ে আলাদা আলাদা হয়। ট্রানজিট অনুরোধে, avoidHighways এবং avoidTolls বিকল্পগুলি উপেক্ষা করা হয়। আপনি TransitOptions অবজেক্ট লিটারেলের মাধ্যমে ট্রানজিট-নির্দিষ্ট রুটিং বিকল্প নির্দিষ্ট করতে পারবেন।

ট্রানজিট সংক্রান্ত অনুরোধের ক্ষেত্রে সময় খুব গুরুত্বপূর্ণ। ভবিষ্যতে শুধুমাত্র বার গণনা করা হবে।

TransitOptions অবজেক্ট লিটারেলের মধ্যে নিম্নলিখিত ফিল্ড থাকে:

{
  arrivalTime: Date,
  departureTime: Date,
  modes: [transitMode1, transitMode2]
  routingPreference: TransitRoutePreference
}

এইসব ফিল্ডের ব্যাখ্যা নিচে দেওয়া হল:

  • arrivalTime (ঐচ্ছিক) Date অবজেক্ট হিসেবে পৌঁছানোর কাঙ্ক্ষিত সময় নির্দিষ্ট করে। পৌঁছানোর সময় উল্লেখ করা থাকলে, ছাড়ার সময় উপেক্ষা করা হয়।
  • departureTime (ঐচ্ছিক) Date অবজেক্ট হিসেবে ছাড়ার কাঙ্ক্ষিত সময় নির্দিষ্ট করে। arrivalTime উল্লেখ করা থাকলে, departureTime উপেক্ষা করা হবে। departureTime অথবা arrivalTime-এর জন্য কোনও ভ্যালু নির্দিষ্ট করা না থাকলে ডিফল্ট হিসেবে 'এখন' (অর্থাৎ, বর্তমান সময়) সেট করা হয়।
  • modes (ঐচ্ছিক) হল একটি অ্যারে যাতে এক বা একাধিক TransitMode অবজেক্ট লিটেরাল থাকে। অনুরোধে API কী থাকলে তবেই এই ফিল্ড যোগ করা যেতে পারে। প্রতিটি TransitMode ট্রানজিটের পছন্দসই মোড নির্দিষ্ট করে। নিম্নলিখিত মানগুলি অনুমোদিত:
    • BUS থেকে বোঝা যায় যে গণনা করা রুটে বাস ব্যবহার করা উচিত।
    • RAIL চিহ্নটি ইঙ্গিত করে যে, গণনা করা রুটে ট্রেন, ট্রাম, লাইট রেল ও পাতাল রেলের মাধ্যমে ভ্রমণ করা উচিত।
    • SUBWAY চিহ্নটি ইঙ্গিত করে যে গণনা করা রুটে সাবওয়েতে ভ্রমণ করা উচিত।
    • TRAIN থেকে বোঝা যায় যে গণনা করা রুটে ট্রেন যাত্রা পছন্দ করা উচিত।
    • TRAM থেকে বোঝা যায় যে গণনা করা রুটে ট্রাম ও লাইট রেলের মাধ্যমে ভ্রমণকে অগ্রাধিকার দেওয়া উচিত।
  • routingPreference (ঐচ্ছিক) ট্রানজিট রুটের জন্য পছন্দ নির্দিষ্ট করে। এই বিকল্প ব্যবহার করে, API-এর বেছে নেওয়া ডিফল্ট সেরা রুট গ্রহণ করার পরিবর্তে, আপনি রিটার্ন করা বিকল্পগুলিকে পক্ষপাতদুষ্ট করতে পারবেন। অনুরোধে API কী থাকলে তবেই এই ফিল্ড উল্লেখ করা যাবে। নিম্নলিখিত মানগুলি অনুমোদিত:
    • FEWER_TRANSFERS এর অর্থ হল, গণনা করা রুটে সীমিত সংখ্যক ট্রান্সফারকে অগ্রাধিকার দেওয়া উচিত।
    • LESS_WALKING এর অর্থ হল, গণনা করা রুটে সীমিত পরিমাণে হাঁটার বিকল্পকে অগ্রাধিকার দেওয়া উচিত।

ড্রাইভিং বিকল্প

প্রত্যাশিত ট্রাফিক পরিস্থিতি অনুযায়ী আপনার গন্তব্যে পৌঁছানোর জন্য সেরা রুট গণনা করতে drivingOptions অবজেক্ট ব্যবহার করে যাত্রা শুরুর সময় নির্দিষ্ট করুন। এছাড়াও, আপনি ট্রাফিকে আনুমানিক সময় সম্পর্কে পেসিমিস্টিক, অপ্টিমিস্টিক বা ঐতিহাসিক ট্রাফিক পরিস্থিতি এবং লাইভ ট্রাফিকের উপর ভিত্তি করে সেরা আনুমানিক সময় চান কিনা তা নির্দিষ্ট করতে পারেন।

drivingOptions অবজেক্টে নিম্নলিখিত ফিল্ড থাকে:

{
  departureTime: Date,
  trafficModel: TrafficModel
}

এইসব ফিল্ডের ব্যাখ্যা নিচে দেওয়া হল:

  • departureTime (drivingOptions অবজেক্ট লিটেরালকে বৈধ হতে হলে এটি প্রয়োজন) Date অবজেক্ট হিসেবে প্রস্থানের কাঙ্ক্ষিত সময় নির্দিষ্ট করে। ভ্যালু অবশ্যই বর্তমান সময় বা ভবিষ্যতের কোনও সময় হিসেবে সেট করতে হবে। এটি অতীতের হলে চলবে না। (API, টাইম জোন জুড়ে সামঞ্জস্যপূর্ণ হ্যান্ডেলিং নিশ্চিত করতে সমস্ত তারিখকে UTC-তে কনভার্ট করে।) আপনি অনুরোধে departureTime যোগ করলে, API সেই সময়ের আনুমানিক ট্রাফিক পরিস্থিতির ভিত্তিতে সবচেয়ে ভাল রুট দেখায় এবং উত্তরে ট্রাফিকে আনুমানিক সময় (duration_in_traffic) অন্তর্ভুক্ত করে। আপনি যদি কোনও ছাড়ার সময় নির্দিষ্ট না করেন (অর্থাৎ, যদি অনুরোধে drivingOptions অন্তর্ভুক্ত না থাকে), তাহলে রিটার্ন করা রুটটি সাধারণত ভাল রুট হয় এবং এতে ট্রাফিক পরিস্থিতি বিবেচনা করা হয় না।
  • trafficModel (ঐচ্ছিক) ট্রাফিকে সময় গণনা করার সময় ব্যবহার করার জন্য অনুমান নির্দিষ্ট করে। এই সেটিংটি উত্তরের duration_in_traffic ফিল্ডে ফেরত আসা ভ্যালুকে প্রভাবিত করে, যেটিতে ঐতিহাসিক গড় মানের উপর ভিত্তি করে ট্রাফিকে আনুমানিক সময় থাকে। ডিফল্ট হিসেবে best_guess সেট করা থাকে। নিম্নলিখিত মানগুলি অনুমোদিত:
    • bestguess (ডিফল্ট) থেকে বোঝা যায় যে রিটার্ন করা duration_in_traffic হল ভ্রমণের সবচেয়ে ভালো আনুমানিক সময়, যা ঐতিহাসিক ট্রাফিক পরিস্থিতি ও লাইভ ট্রাফিক সংক্রান্ত তথ্যের ভিত্তিতে দেওয়া হয়। departureTime যত বর্তমান সময়ের কাছাকাছি হবে, লাইভ ট্রাফিক তত বেশি গুরুত্বপূর্ণ হয়ে উঠবে।
    • pessimistic থেকে বোঝা যায় যে রিটার্ন duration_in_traffic বেশিরভাগ দিনেই প্রকৃত ভ্রমণের সময়ের চেয়ে বেশি হওয়া উচিত, যদিও মাঝে মাঝে বিশেষ করে খারাপ ট্রাফিক পরিস্থিতি থাকলে এই মান অতিক্রম করতে পারে।
    • optimistic থেকে বোঝা যায় যে রিটার্ন duration_in_traffic বেশিরভাগ দিনেই প্রকৃত ভ্রমণের সময়ের চেয়ে কম হওয়া উচিত, যদিও মাঝে মাঝে বিশেষ ভালো ট্রাফিক কন্ডিশনের দিন এই ভ্যালুর চেয়ে কম সময় লাগতে পারে।

নিচে DistanceMatrixRequest-এর একটি নমুনা দেওয়া হল, যা ড্রাইভিং রুট, প্রস্থান করার সময় ও ট্রাফিক মডেল সহ:

{
  origins: [{lat: 55.93, lng: -3.118}, 'Greenwich, England'],
  destinations: ['Stockholm, Sweden', {lat: 50.087, lng: 14.421}],
  travelMode: 'DRIVING',
  drivingOptions: {
    departureTime: new Date(Date.now() + N),  // for the time N milliseconds from now.
    trafficModel: 'optimistic'
  }
}

Distance Matrix থেকে পাওয়া উত্তর

Distance Matrix পরিষেবায় কল সফল হলে, একটি DistanceMatrixResponse অবজেক্ট ও একটি DistanceMatrixStatus অবজেক্ট রিটার্ন করে। এগুলি অনুরোধে আপনার উল্লেখ করা কলব্যাক ফাংশনে পাস করা হয়।

DistanceMatrixResponse অবজেক্টে প্রতিটি সোর্স/ডেস্টিনেশন পেয়ারের জন্য দূরত্ব এবং সময়সীমা সংক্রান্ত তথ্য থাকে, যার জন্য রুট ক্যালকুলেট করা যেতে পারে।

{
  "originAddresses": [ "Greenwich, Greater London, UK", "13 Great Carleton Square, Edinburgh, City of Edinburgh EH16 4, UK" ],
  "destinationAddresses": [ "Stockholm County, Sweden", "Dlouhá 609/2, 110 00 Praha-Staré Město, Česká republika" ],
  "rows": [ {
    "elements": [ {
      "status": "OK",
      "duration": {
        "value": 70778,
        "text": "19 hours 40 mins"
      },
      "distance": {
        "value": 1887508,
        "text": "1173 mi"
      }
    }, {
      "status": "OK",
      "duration": {
        "value": 44476,
        "text": "12 hours 21 mins"
      },
      "distance": {
        "value": 1262780,
        "text": "785 mi"
      }
    } ]
  }, {
    "elements": [ {
      "status": "OK",
      "duration": {
        "value": 96000,
        "text": "1 day 3 hours"
      },
      "distance": {
        "value": 2566737,
        "text": "1595 mi"
      }
    }, {
      "status": "OK",
      "duration": {
        "value": 69698,
        "text": "19 hours 22 mins"
      },
      "distance": {
        "value": 1942009,
        "text": "1207 mi"
      }
    } ]
  } ]
}

Distance Matrix ফলাফল

উত্তরে কাজ করে এমন ফিল্ডের ব্যাপারে নিচে ব্যাখ্যা করা হল।

  • originAddresses হল লোকেশন সহ একটি অ্যারে যা Distance Matrix অনুরোধের origins ফিল্ডে পাস করা হয়েছে। জিওকোডার যেভাবে ফর্ম্যাট করে, সেইভাবেই ঠিকানাগুলি ফেরত দেওয়া হয়।
  • destinationAddresses হল এমন একটি অ্যারে যাতে destinations ফিল্ডে পাস করা লোকেশন থাকে, এটি জিওকোডার দ্বারা ফেরত পাঠানো ফর্ম্যাটে থাকে।
  • rows হল DistanceMatrixResponseRow অবজেক্টের একটি অ্যারে, যেখানে প্রতিটি সারি একটি অরিজিনকে বোঝায়।
  • elements হল rows-এর সন্তান এবং প্রতিটি গন্তব্যের সাথে সারির মূলের পেয়ারিংয়ের সাথে সম্পর্কিত। এগুলিতে প্রতিটি উৎস/গন্তব্য পেয়ারের জন্য স্ট্যাটাস, সময়সীমা, দূরত্ব ও ভাড়ার তথ্য (উপলভ্য থাকলে) থাকে।
  • প্রতিটি element-এ নিম্নলিখিত ফিল্ড থাকে:
    • status: সম্ভাব্য স্ট্যাটাস কোডের তালিকার জন্য স্ট্যাটাস কোড দেখুন।
    • duration: এই রুটে ভ্রমণ করতে কত সময় লাগে, তা সেকেন্ডে (value ফিল্ড) এবং text হিসেবে দেখানো হয়। টেক্সচুয়াল ভ্যালু, অনুরোধে (বা কোনও পছন্দ উল্লেখ করা না থাকলে মেট্রিক্সে) উল্লেখ করা unitSystem অনুযায়ী ফর্ম্যাট করা হয়।
    • duration_in_traffic: এই রুটে ট্র্যাভেল করতে কত সময় লাগে তা বর্তমান ট্র্যাফিক পরিস্থিতি বিবেচনা করে, সেকেন্ডে (value ফিল্ড) এবং text হিসেবে দেখানো হয়। টেক্সচুয়াল ভ্যালু, অনুরোধে (বা কোনও পছন্দ উল্লেখ করা না থাকলে মেট্রিক্সে) উল্লেখ করা unitSystem অনুযায়ী ফর্ম্যাট করা হয়। duration_in_traffic শুধুমাত্র ট্রাফিক ডেটা উপলভ্য থাকলে রিটার্ন করা হয়, mode driving হিসেবে সেট করা হয় এবং departureTime অনুরোধে distanceMatrixOptions ফিল্ডের অংশ হিসেবে অন্তর্ভুক্ত করা হয়।
    • distance: এই রুটের মোট দূরত্ব, যা মিটারে (value) এবং text হিসেবে দেখানো হয়েছে। টেক্সচুয়াল ভ্যালু অনুরোধে (অথবা কোনও পছন্দ না দেওয়া থাকলে মেট্রিক্সে) উল্লেখ করা unitSystem অনুযায়ী ফর্ম্যাট করা হয়।
    • fare: এই রুটের মোট ভাড়া (অর্থাৎ, মোট টিকিটের খরচ) উল্লেখ করা আছে। এই প্রপার্টি শুধুমাত্র ট্রানজিট অনুরোধের জন্য এবং শুধুমাত্র সেইসব ট্রানজিট প্রদানকারীর জন্য রিটার্ন করা হয় যেখানে ভাড়া সংক্রান্ত তথ্য উপলভ্য। এই তথ্যের মধ্যে রয়েছে:
      • currency: একটি ISO 4217 মুদ্রা কোড যা সেই মুদ্রাকে নির্দেশ করে যেটিতে পরিমাণটি প্রকাশ করা হয়েছে।
      • value: উপরে উল্লেখ করা মুদ্রায় ভাড়ার মোট পরিমাণ।

স্ট্যাটাস কোড

ডিস্ট্যান্স ম্যাট্রিক্স রেসপন্সে, সম্পূর্ণ রেসপন্সের জন্য একটি স্ট্যাটাস কোড এবং প্রতিটি এলিমেন্টের জন্য একটি স্ট্যাটাস থাকে।

রেসপন্স স্ট্যাটাস কোড

DistanceMatrixResponse-এর ক্ষেত্রে প্রযোজ্য স্ট্যাটাস কোডগুলি DistanceMatrixStatus অবজেক্টে পাস করা হয় এবং এর মধ্যে এগুলি অন্তর্ভুক্ত থাকে:

  • OK — অনুরোধটি সঠিক। এই স্ট্যাটাসটি এমনকি কোনও অরিজিন এবং ডেস্টিনেশনের মধ্যে কোনও রুট খুঁজে না পাওয়া গেলেও ফেরত দেওয়া যেতে পারে। এলিমেন্ট-লেভেল স্ট্যাটাস সংক্রান্ত তথ্যের জন্য এলিমেন্ট স্ট্যাটাস কোড দেখুন।
  • INVALID_REQUEST — প্রদত্ত অনুরোধটি ভুল ছিল। প্রয়োজনীয় ফিল্ডে তথ্য না থাকার কারণে এটি প্রায়ই ঘটে। উপরে কাজ করে এমন ফিল্ডের তালিকা দেখুন।
  • MAX_ELEMENTS_EXCEEDED — সোর্স ও ডেস্টিনেশনের প্রোডাক্ট প্রতি কোয়েরি সীমা ছাড়িয়ে গেছে।
  • MAX_DIMENSIONS_EXCEEDED — আপনার অনুরোধে ২৫টির বেশি অরিজিন বা ২৫টির বেশি ডেস্টিনেশন ছিল।
  • OVER_QUERY_LIMIT — আপনার অ্যাপ্লিকেশন অনুমোদিত সময়সীমার মধ্যে অনেক বেশি এলিমেন্ট অনুরোধ করেছে। আপনি যদি যথেষ্ট সময় পরে আবার চেষ্টা করেন, তাহলে অনুরোধটি সম্পূর্ণ হবে।
  • REQUEST_DENIED — আপনার ওয়েবপেজকে ডিস্টেন্স ম্যাট্রিক্স পরিষেবা ব্যবহার করতে দেওয়া হয়নি।
  • UNKNOWN_ERROR — সার্ভারে সমস্যার কারণে Distance Matrix সংক্রান্ত অনুরোধ প্রসেস করা যায়নি। আপনি আবার চেষ্টা করলে অনুরোধটি সফল হতে পারে।

এলিমেন্টের স্ট্যাটাস কোড

নির্দিষ্ট DistanceMatrixElement অবজেক্টের ক্ষেত্রে নিম্নলিখিত স্ট্যাটাস কোড প্রযোজ্য:

  • NOT_FOUND — এই পেয়ারিংয়ের অরিজিন এবং/অথবা গন্তব্য জিওকোড করা যায়নি।
  • OK — উত্তরে একটি সঠিক ফলাফল রয়েছে।
  • ZERO_RESULTS — যাত্রা শুরুর স্থান ও গন্তব্যের মধ্যে কোনও রুট খুঁজে পাওয়া যায়নি।

ফলাফল পার্স করা

অনুরোধে পাস করা প্রতিটি অরিজিনের জন্য DistanceMatrixResponse অবজেক্টে একটি row থাকে। প্রতিটি সারিতে প্রদান করা গন্তব্যের সাথে সেই উৎসের প্রতিটি পেয়ারিংয়ের জন্য একটি element ফিল্ড থাকে।

function callback(response, status) {
  if (status == 'OK') {
    var origins = response.originAddresses;
    var destinations = response.destinationAddresses;

    for (var i = 0; i < origins.length; i++) {
      var results = response.rows[i].elements;
      for (var j = 0; j < results.length; j++) {
        var element = results[j];
        var distance = element.distance.text;
        var duration = element.duration.text;
        var from = origins[i];
        var to = destinations[j];
      }
    }
  }
}