জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি)

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

প্লেস অটোকমপ্লিট (Legacy) হল একটি ওয়েব পরিষেবা যা HTTP অনুরোধের উত্তরে জায়গা সংক্রান্ত পূর্বাভাস প্রদান করে। অনুরোধে টেক্সচুয়াল সার্চ স্ট্রিং ও ঐচ্ছিক ভৌগোলিক সীমা উল্লেখ করা হয়েছে। এই পরিষেবা ব্যবহার করে টেক্সট-ভিত্তিক ভৌগোলিক সার্চের জন্য অটোমেটিক সম্পূর্ণ করার কার্যকারিতা প্রদান করা যায়, ব্যবহারকারী টাইপ করার সাথে সাথে ব্যবসা, ঠিকানা এবং আগ্রহের পয়েন্টের মতো জায়গা দেখানো হয়।

জায়গা অটোমেটিক সম্পূর্ণ করা (পুরনো) সংক্রান্ত অনুরোধ

প্লেস অটোকমপ্লিট (Legacy) হল Places API-এর অংশ এবং এটি API কী ও কোটা Places API-এর সাথে শেয়ার করে।

জায়গা অটোমেটিক সম্পূর্ণ করা (পুরনো ভার্সন) সম্পূর্ণ শব্দ এবং সাবস্ট্রিংয়ের সাথে মিলতে পারে, জায়গার নাম, ঠিকানা এবং প্লাস কোড সমাধান করে। তাই, ব্যবহারকারী টাইপ করার সাথে সাথেই অ্যাপ্লিকেশন কোয়েরি পাঠাতে পারে, যাতে তৎক্ষণাৎ জায়গা সম্পর্কিত পূর্বাভাস দেওয়া যায়।

আপনাকে অবশ্যই প্লাস কোড সঠিকভাবে ফর্ম্যাট করতে হবে। এর অর্থ হল, আপনাকে অবশ্যই প্লাস চিহ্নকে URL-এ এস্কেপ করে %2B এবং স্পেসকে URL-এ এস্কেপ করে %20 করতে হবে।

  • গ্লোবাল কোড হল চার অক্ষরের এরিয়া কোড এবং ছয় অক্ষর বা তার বেশি স্থানীয় কোড। যেমন, URL-এস্কেপ গ্লোবাল কোড 849VCWC8+R9 হল 849VCWC8%2BR9।
  • কম্পাউন্ড কোড হল ছয় অক্ষরের (বা তার বেশি) স্থানীয় কোড যার সাথে একটি নির্দিষ্ট লোকেশন থাকে। যেমন, URL-এ এস্কেপ করা কম্পাউন্ড কোড CWC8+R9 Mountain View, CA, USA হল CWC8%2BR9%20Mountain%20View%20CA%20USA।

ফিরে আসা সাজেশনগুলি ব্যবহারকারীকে দেখানোর জন্য ডিজাইন করা হয়েছে যাতে তারা যে জায়গাটি চান সেটি বেছে নিতে পারেন। ফেরানো হয়েছে এমন যেকোনও জায়গার ব্যাপারে আরও তথ্য পেতে, আপনি জায়গার বিবরণ (লিগ্যাসি) অনুরোধ পাঠাতে পারেন।

প্লেস অটোকমপ্লিট (Legacy) অনুরোধ হল নিম্নলিখিত ফর্মের একটি HTTP URL:

https://maps.googleapis.com/maps/api/place/autocomplete/output?parameters

যেখানে output নিম্নলিখিত মানগুলির মধ্যে যেকোনও একটি হতে পারে:

  • json (সাজেস্ট করা হয়েছে) জাভাস্ক্রিপ্টে আউটপুট দেখায় অবজেক্ট নোটেশন (JSON)
  • xml XML হিসেবে আউটপুট নির্দেশ করে

Place Autocomplete (Legacy) অনুরোধ শুরু করার জন্য নির্দিষ্ট কিছু প্যারামিটার প্রয়োজন। URL-এ স্ট্যান্ডার্ড হিসেবে, সব প্যারামিটার অ্যামপারস্যান্ড (&) অক্ষর ব্যবহার করে আলাদা করা হয়। প্যারামিটার ও সেগুলির সম্ভাব্য ভ্যালুর তালিকা নিচে দেওয়া হল।

প্রয়োজনীয় প্যারামিটার

  • ইনপুট

    যে টেক্সট স্ট্রিং সার্চ করতে হবে। এই স্ট্রিংয়ের উপর ভিত্তি করে প্লেস অটোকমপ্লিট পরিষেবা সম্ভাব্য ম্যাচ রিটার্ন করবে এবং তাদের অনুভূত প্রাসঙ্গিকতার ভিত্তিতে ফলাফল অর্ডার করবে।

ঐচ্ছিক প্যারামিটার

  • কম্পোনেন্ট

    আপনি যেসব জায়গায় আপনার ফলাফল সীমাবদ্ধ করতে চান সেগুলির একটি গ্রুপিং। আপনি সর্বাধিক ৫টি দেশ অনুসারে ফিল্টার করতে কম্পোনেন্ট ব্যবহার করতে পারবেন। দেশকে অবশ্যই দুই অক্ষরের ISO 3166-1 Alpha-2 মানানসই দেশের কোড হিসেবে পাস করতে হবে। যেমন: components=country:fr আপনার ফলাফলকে ফ্রান্সের মধ্যে সীমাবদ্ধ রাখবে। একাধিক দেশ অবশ্যই একাধিক country:XX ফিল্টার হিসেবে পাস করতে হবে, পাইপ চিহ্ন | বিভাজক হিসেবে ব্যবহার করতে হবে। যেমন: components=country:us|country:pr|country:vi|country:gu|country:mp আপনার ফলাফল মার্কিন যুক্তরাষ্ট্র এবং এর অসংগঠিত অঞ্চলের মধ্যে সীমাবদ্ধ করবে।

    মনে রাখবেন: কোনও দেশের কোড ব্যবহার করে অপ্রত্যাশিত ফলাফল পেলে, আপনি যে কোড ব্যবহার করছেন তাতে আপনার অভিপ্রেত দেশ, নির্ভরশীল অঞ্চল এবং ভৌগোলিক আগ্রহের বিশেষ এলাকা অন্তর্ভুক্ত আছে কিনা তা যাচাই করুন। আপনি কোড সংক্রান্ত তথ্য Wikipedia: ISO 3166 দেশের কোডের তালিকা অথবা ISO অনলাইন ব্রাউজিং প্ল্যাটফর্ম থেকে পেতে পারেন।
  • ভাষা

    যে ভাষায় ফলাফল দেখানো হবে।

    • কাজ করে এমন ভাষার তালিকা দেখুন। Google প্রায়ই যেসব ভাষা কাজ করে সেগুলির তালিকা আপডেট করে, তাই এই তালিকা সম্পূর্ণ নাও হতে পারে।
    • language প্রদান করা না হলে, API Accept-Language হেডারে উল্লেখ করা পছন্দের ভাষা ব্যবহার করার চেষ্টা করে।
    • ব্যবহারকারী ও স্থানীয় লোকজন, উভয়ের কাছেই বোধগম্য হয় এমন রাস্তার ঠিকানা প্রদান করার জন্য API যথাসাধ্য চেষ্টা করে। সেই লক্ষ্য পূরণ করতে, এটি স্থানীয় ভাষায় রাস্তার ঠিকানা রিটার্ন করে, প্রয়োজন হলে ব্যবহারকারীর পড়ার মতো স্ক্রিপ্টে ট্রান্সলিটারেট করে এবং পছন্দের ভাষা মেনে চলে। অন্যান্য সব ঠিকানা পছন্দের ভাষায় দেখানো হয়। ঠিকানার সব কম্পোনেন্ট একই ভাষায় দেখানো হয়, যা প্রথম কম্পোনেন্ট থেকে বেছে নেওয়া হয়।
    • পছন্দসই ভাষায় কোনও নাম উপলভ্য না থাকলে, API সবচেয়ে কাছাকাছি ম্যাচ ব্যবহার করে।
    • API যে ফলাফল দেখায় এবং যে ক্রমে দেখায়, তার উপর পছন্দের ভাষার সামান্য প্রভাব থাকে। ভাষা অনুযায়ী জিওকোডার সংক্ষিপ্ত শব্দ আলাদাভাবে ব্যাখ্যা করে, যেমন, রাস্তার ধরনের সংক্ষিপ্ত শব্দ বা সমার্থক শব্দ যা একটি ভাষায় বৈধ হতে পারে কিন্তু অন্য ভাষায় নয়। যেমন, utca এবং tér হল হাঙ্গেরিয়ান ভাষায় রাস্তার সমার্থক শব্দ।
  • লোকেশন

    যে পয়েন্টের আশেপাশে জায়গার তথ্য রিট্রিভ করতে হবে। এটি অবশ্যই latitude,longitude হিসেবে উল্লেখ করতে হবে। লোকেশন নির্দিষ্ট করার সময় radius প্যারামিটারও উল্লেখ করতে হবে। radius প্রদান করা না হলে, location প্যারামিটার উপেক্ষা করা হয়।

    টেক্সট সার্চ API ব্যবহার করার সময়, `location` প্যারামিটার ওভাররাইড করা হতে পারে যদি `query`-তে নির্দিষ্ট লোকেশন থাকে, যেমন `Market in Barcelona`।
  • locationbias

    নির্দিষ্ট এলাকায় ফলাফল পেতে, ব্যাসার্ধের সাথে অক্ষাংশ/দ্রাঘিমাংশ অথবা দুটি অক্ষাংশ/দ্রাঘিমাংশের জোড়া উল্লেখ করুন যা আয়তক্ষেত্রের পয়েন্ট দেখায়। এই প্যারামিটার উল্লেখ করা না থাকলে, API ডিফল্ট হিসেবে IP অ্যাড্রেস বায়াসিং ব্যবহার করে।

    • IP বায়াস: API-কে IP অ্যাড্রেস বায়াসিং ব্যবহার করার নির্দেশ দেয়। স্ট্রিং পাস করুন ipbias (এই বিকল্পে কোনও অতিরিক্ত প্যারামিটার নেই)।
    • বৃত্তাকার: মিটারে ব্যাসার্ধ নির্দিষ্ট করে এমন একটি স্ট্রিং, সাথে দশমিক ডিগ্রিতে অক্ষাংশ/দ্রাঘিমাংশ। নিম্নলিখিত ফর্ম্যাট ব্যবহার করুন: circle:radius@lat,lng।
    • আয়তাকার: দশমিক ডিগ্রিতে দুটি অক্ষাংশ/দ্রাঘিমাংশ জোড়া নির্দিষ্ট করে এমন স্ট্রিং, যা আয়তক্ষেত্রের দক্ষিণ/পশ্চিম এবং উত্তর/পূর্ব বিন্দুকে দেখায়। নিম্নলিখিত ফর্ম্যাট ব্যবহার করুন:rectangle:south,west|north,east. মনে রাখবেন যে পূর্ব/পশ্চিমের ভ্যালু -১৮০, ১৮০ রেঞ্জে এবং উত্তর/দক্ষিণের ভ্যালু -৯০, ৯০ রেঞ্জে সীমাবদ্ধ।
  • locationrestriction

    একটি নির্দিষ্ট ব্যাসার্ধ প্লাস অক্ষাংশ/দ্রাঘিমাংশ বা একটি আয়তক্ষেত্রের বিন্দুগুলিকে উপস্থাপন করে এমন দুটি অক্ষাংশ/দ্রাঘিমাংশ জোড়া নির্দিষ্ট করে, একটি নির্দিষ্ট এলাকায় ফলাফল সীমাবদ্ধ করুন।

    • বৃত্তাকার: মিটারে ব্যাসার্ধ এবং দশমিক ডিগ্রিতে অক্ষাংশ/দ্রাঘিমাংশ নির্দিষ্ট করে এমন একটি স্ট্রিং। নিম্নলিখিত ফর্ম্যাট ব্যবহার করুন: circle:radius@lat,lng.
    • আয়তাকার: একটি স্ট্রিং যা দশমিক ডিগ্রিতে দুটি অক্ষাংশ/দ্রাঘিমাংশ জোড়া নির্দিষ্ট করে, যা একটি আয়তক্ষেত্রের দক্ষিণ/পশ্চিম ও উত্তর/পূর্ব বিন্দুকে উপস্থাপন করে। নিম্নলিখিত ফর্ম্যাট ব্যবহার করুন:rectangle:south,west|north,east. মনে রাখবেন যে পূর্ব/পশ্চিমের ভ্যালু -১৮০, ১৮০ রেঞ্জে এবং উত্তর/দক্ষিণের ভ্যালু -৯০, ৯০ রেঞ্জে সীমাবদ্ধ।
  • অফসেট

    ইনপুট শব্দে, শেষ অক্ষরের পজিশন যা পরিষেবা অনুমান ম্যাচ করার জন্য ব্যবহার করে। যেমন, ইনপুট যদি Google হয় এবং অফসেট ৩ হয়, তাহলে পরিষেবা Goo-এর সাথে মিলবে। অফসেট দ্বারা নির্ধারিত স্ট্রিংটি শুধুমাত্র ইনপুট শব্দের প্রথম শব্দের সাথে ম্যাচ করা হয়। যেমন, ইনপুট করা শব্দ হল Google abc এবং অফসেট হল ৩, তাহলে পরিষেবাটি Goo abc-এর সাথে ম্যাচ করানোর চেষ্টা করবে। কোনও অফসেট না দেওয়া হলে, পরিষেবা সম্পূর্ণ মেয়াদ ব্যবহার করবে। অফসেট সাধারণত টেক্সট ক্যারেটের পজিশনে সেট করা উচিত।

  • উৎস

    যে উৎস বিন্দু থেকে গন্তব্যের সরলরৈখিক দূরত্ব গণনা করা হবে (distance_meters হিসেবে ফেরত দেওয়া হয়)। এই মান বাদ দেওয়া হলে, সরলরৈখিক দূরত্ব ফেরত দেওয়া হবে না। অবশ্যই latitude,longitude হিসেবে উল্লেখ করতে হবে।

  • যতটা অঞ্চল জুড়ে টার্গেট করা যাবে

    কত দূরত্ব (মিটারে) পর্যন্ত জায়গার ফলাফল দেখানো হবে তা নির্ধারণ করে। আপনি location ও radius প্যারামিটার পাস করে কোনও নির্দিষ্ট বৃত্তের ফলাফলকে পক্ষপাতদুষ্ট করতে পারেন। এটি করলে Places পরিষেবাকে সেই বৃত্তের মধ্যে ফলাফল দেখানোর জন্য অগ্রাধিকার দেওয়ার নির্দেশ দেওয়া হয়; তবে নির্দিষ্ট করা এলাকার বাইরের ফলাফলও দেখানো হতে পারে।

    সার্চের ধরন ও অন্যান্য প্যারামিটারের উপর নির্ভর করে ব্যাসার্ধ অটোমেটিক সর্বাধিক মানে ক্ল্যাম্প করা হবে।

    • অটো-কমপ্লিট: ৫০,০০০ মিটার
    • আশেপাশে সার্চ করা:
      • keyword বা name-এর সাথে: ৫০,০০০ মিটার
      • keyword বা name ছাড়া
        • ৫০,০০০ মিটার পর্যন্ত, এলাকার ঘনত্বের উপর ভিত্তি করে ডায়নামিকভাবে অ্যাডজাস্ট করা হয়, rankby প্যারামিটার থেকে স্বাধীন।
        • rankby=distance ব্যবহার করার সময়, ব্যাসার্ধ প্যারামিটার গ্রহণ করা হবে না এবং এর ফলে INVALID_REQUEST হবে।
    • কোয়েরি অটো-কমপ্লিট: ৫০,০০০ মিটার
    • টেক্সট সার্চ: ৫০,০০০ মিটার
  • অঞ্চল

    অঞ্চল কোড, যা ccTLD ("টপ-লেভেল ডোমেন") দুটি অক্ষর দিয়ে লেখা ভ্যালু হিসেবে নির্দিষ্ট করা হয়। বেশিরভাগ ccTLD কোড ISO 3166-1 কোডের মতো, কিছু উল্লেখযোগ্য ব্যতিক্রম সহ। যেমন, যুক্তরাজ্যের ccTLD হল "uk" (.co.uk) এবং এর ISO 3166-1 কোড হল "gb" (টেকনিক্যালি "গ্রেট ব্রিটেন ও উত্তর আয়ারল্যান্ডের যুক্তরাজ্য" এন্টিটির জন্য)।

  • sessiontoken

    একটি র‍্যান্ডম স্ট্রিং যা বিলিংয়ের উদ্দেশ্যে একটি অটোমেটিক সম্পূর্ণ হওয়া সেশন শনাক্ত করে।

    ব্যবহারকারী কোয়েরি টাইপ করা শুরু করলে সেশন শুরু হয় এবং কোনও জায়গা বেছে নিলে ও সেই জায়গার বিবরণ দেখার জন্য কল করা হলে সেশন শেষ হয়। প্রতিটি সেশনে একাধিক কোয়েরি থাকতে পারে, তারপরে একটি জায়গা বেছে নেওয়া হয়। সেশনের মধ্যে প্রতিটি অনুরোধের জন্য ব্যবহৃত API কী একই Google Cloud Console প্রোজেক্টের হতে হবে। সেশন শেষ হয়ে গেলে, টোকেন আর বৈধ থাকে না; প্রতিটি সেশনের জন্য আপনার অ্যাপকে নতুন টোকেন তৈরি করতে হবে। sessiontoken প্যারামিটার বাদ দিলে অথবা সেশন টোকেন আবার ব্যবহার করলে, সেশন টোকেন না দিলে যেভাবে চার্জ করা হয়, সেইভাবে চার্জ করা হয় (প্রতিটি অনুরোধের জন্য আলাদাভাবে বিল করা হয়)।

    আমরা নিম্নলিখিত নির্দেশিকা সাজেস্ট করি:

    • সব অটোকমপ্লিট সেশনের জন্য সেশন টোকেন ব্যবহার করুন।
    • প্রতিটি সেশনের জন্য নতুন টোকেন জেনারেট করুন। UUID-এর ভার্সন ৪ ব্যবহার করার জন্য সাজেস্ট করা হয়।
    • নিশ্চিত করুন যে একটি সেশনের মধ্যে সব Place Autocomplete এবং Place Details অনুরোধের জন্য ব্যবহৃত API কী একই Cloud Console প্রোজেক্টের অন্তর্গত।
    • প্রতিটি নতুন সেশনের জন্য একটি অনন্য সেশন টোকেন পাস করতে ভুলবেন না। একাধিক সেশনের জন্য একই টোকেন ব্যবহার করলে, প্রতিটি অনুরোধের জন্য আলাদা আলাদা করে বিল করা হবে।
  • strictbounds

    শুধুমাত্র সেইসব জায়গা রিটার্ন করে যেগুলি location এবং radius-এর দ্বারা নির্ধারিত অঞ্চলের মধ্যে কঠোরভাবে পড়ে। এটি একটি বিধিনিষেধ, পক্ষপাত নয়, অর্থাৎ এই অঞ্চলের বাইরে থাকা ফলাফল ব্যবহারকারীর ইনপুটের সাথে ম্যাচ করলেও সেগুলি দেখানো হবে না।

  • প্রকার

    আপনি types প্যারামিটার পাস করে কোনও নির্দিষ্ট ধরনের জায়গা অটোমেটিক সম্পূর্ণ করার অনুরোধ থেকে ফলাফল সীমাবদ্ধ করতে পারেন। এই প্যারামিটার স্থানের ধরন-এ তালিকাভুক্ত কোনও ধরন বা ধরনের সংগ্রহ নির্দিষ্ট করে। কিছু উল্লেখ করা না থাকলে, সব ধরনের ডেটা ফেরত দেওয়া হয়।

    কোনও জায়গায় সারণী ১ বা সারণী ২-এ তালিকাভুক্ত ধরনগুলির মধ্যে থেকে শুধুমাত্র একটি প্রাথমিক ধরন থাকতে পারে। যেমন, কোনও হোটেলে খাবার পরিবেশন করা হলে সেটি শুধুমাত্র types=lodging দিয়েই ফেরত দেওয়া যাবে, types=restaurant দিয়ে নয়।

    types প্যারামিটারের ভ্যালুর জন্য আপনি এগুলির মধ্যে যেকোনও একটি উল্লেখ করতে পারেন:

    • টেবিল ১ বা টেবিল ২ থেকে সর্বাধিক পাঁচটি ভ্যালু। একাধিক ভ্যালুর জন্য, প্রতিটি ভ্যালুকে | (উল্লম্ব বার) দিয়ে আলাদা করুন। যেমন:

      types=book_store|cafe

    • সারণী ৩-এ কাজ করে এমন যেকোনও একটি ফিল্টার। আপনি বিভিন্ন ধরনের কালেকশন একসাথে ব্যবহার করতে পারবেন না।

    এইসব ক্ষেত্রে INVALID_REQUEST সমস্যা সহ অনুরোধটি বাতিল করা হবে:

    • পাঁচটির বেশি ধরন উল্লেখ করা হয়েছে।
    • কোনও অচেনা ধরন উপস্থিত আছে।
    • in টেবিল ১ বা টেবিল ২ -এর যেকোনও ধরনের সাথে টেবিল ৩-এর যেকোনও ফিল্টার মিশে গেছে।

প্লেস অটোকমপ্লিট (লিগ্যাসি) সংক্রান্ত উদাহরণ

ক্যালিফোর্নিয়ার সান ফ্রান্সিসকো কেন্দ্রিক এলাকার মধ্যে "Amoeba" স্ট্রিং আছে এমন প্রতিষ্ঠানের জন্য অনুরোধ:

ইউআরএল

https://maps.googleapis.com/maps/api/place/autocomplete/json
      ?input=amoeba
      &types=establishment
      &location=37.76999%2C-122.44696
      &radius=500
      &key=YOUR_API_KEY

কার্ল

curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&key=YOUR_API_KEY'

একই অনুরোধ, তবে ফলাফল যেন Ashbury St ও Haight St-এর ৫০০ মিটারের মধ্যে হয়, সান ফ্রান্সিসকো:

ইউআরএল

https://maps.googleapis.com/maps/api/place/autocomplete/json
      ?input=amoeba
      &types=establishment
      &location=37.76999%2C-122.44696&radius=500
      &strictbounds=true
      &key=YOUR_API_KEY

কার্ল

curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&strictbounds=true&key=YOUR_API_KEY'

"Vict" আছে এমন ঠিকানা খোঁজার অনুরোধের ফলাফল ফরাসি ভাষায়:

ইউআরএল

https://maps.googleapis.com/maps/api/place/autocomplete/json
      ?input=Vict
      &types=geocode
      &language=fr
      &key=YOUR_API_KEY

কার্ল

curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=geocode&language=fr&key=YOUR_API_KEY'

ব্রাজিলিয়ান পর্তুগীজে ফলাফল সহ "Vict" আছে এমন শহরের জন্য অনুরোধ:

ইউআরএল

https://maps.googleapis.com/maps/api/place/autocomplete/json
      ?input=Vict
      &types=(cities)
      &language=pt_BR&key=YOUR_API_KEY

কার্ল

curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=(cities)&language=pt_BR&key=YOUR_API_KEY'

মনে রাখবেন, এইসব উদাহরণে আপনাকে API key নিজের কী দিয়ে পরিবর্তন করতে হবে।

জায়গা অটোমেটিক সম্পূর্ণ করা (লেগ্যাসি) সংক্রান্ত উত্তর

অনুরোধের URL পাথের মধ্যে থাকা output ফ্ল্যাগ দ্বারা নির্দেশিত ফর্ম্যাটে 'প্লেস অটোকমপ্লিট (লেগ্যাসি)' সংক্রান্ত উত্তর ফেরত দেওয়া হয়। নিচে দেখানো ফলাফলগুলি নিম্নলিখিত প্যারামিটার সহ কোয়েরির জন্য কী ফেরত আসতে পারে তার ইঙ্গিত দেয়:

ইউআরএল

https://maps.googleapis.com/maps/api/place/autocomplete/json
      ?input=Paris
      &types=geocode
      &key=YOUR_API_KEY

কার্ল

curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Paris&types=geocode&key=YOUR_API_KEY'

JSON

{
  "predictions":
    [
      {
        "description": "Paris, France",
        "matched_substrings": [{ "length": 5, "offset": 0 }],
        "place_id": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ",
        "reference": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ",
        "structured_formatting":
          {
            "main_text": "Paris",
            "main_text_matched_substrings": [{ "length": 5, "offset": 0 }],
            "secondary_text": "France",
          },
        "terms":
          [
            { "offset": 0, "value": "Paris" },
            { "offset": 7, "value": "France" },
          ],
        "types": ["locality", "political", "geocode"],
      },
      {
        "description": "Paris, TX, USA",
        "matched_substrings": [{ "length": 5, "offset": 0 }],
        "place_id": "ChIJmysnFgZYSoYRSfPTL2YJuck",
        "reference": "ChIJmysnFgZYSoYRSfPTL2YJuck",
        "structured_formatting":
          {
            "main_text": "Paris",
            "main_text_matched_substrings": [{ "length": 5, "offset": 0 }],
            "secondary_text": "TX, USA",
          },
        "terms":
          [
            { "offset": 0, "value": "Paris" },
            { "offset": 7, "value": "TX" },
            { "offset": 11, "value": "USA" },
          ],
        "types": ["locality", "political", "geocode"],
      },
      {
        "description": "Paris, TN, USA",
        "matched_substrings": [{ "length": 5, "offset": 0 }],
        "place_id": "ChIJ4zHP-Sije4gRBDEsVxunOWg",
        "reference": "ChIJ4zHP-Sije4gRBDEsVxunOWg",
        "structured_formatting":
          {
            "main_text": "Paris",
            "main_text_matched_substrings": [{ "length": 5, "offset": 0 }],
            "secondary_text": "TN, USA",
          },
        "terms":
          [
            { "offset": 0, "value": "Paris" },
            { "offset": 7, "value": "TN" },
            { "offset": 11, "value": "USA" },
          ],
        "types": ["locality", "political", "geocode"],
      },
      {
        "description": "Paris, Brant, ON, Canada",
        "matched_substrings": [{ "length": 5, "offset": 0 }],
        "place_id": "ChIJsamfQbVtLIgR-X18G75Hyi0",
        "reference": "ChIJsamfQbVtLIgR-X18G75Hyi0",
        "structured_formatting":
          {
            "main_text": "Paris",
            "main_text_matched_substrings": [{ "length": 5, "offset": 0 }],
            "secondary_text": "Brant, ON, Canada",
          },
        "terms":
          [
            { "offset": 0, "value": "Paris" },
            { "offset": 7, "value": "Brant" },
            { "offset": 14, "value": "ON" },
            { "offset": 18, "value": "Canada" },
          ],
        "types": ["neighborhood", "political", "geocode"],
      },
      {
        "description": "Paris, KY, USA",
        "matched_substrings": [{ "length": 5, "offset": 0 }],
        "place_id": "ChIJsU7_xMfKQ4gReI89RJn0-RQ",
        "reference": "ChIJsU7_xMfKQ4gReI89RJn0-RQ",
        "structured_formatting":
          {
            "main_text": "Paris",
            "main_text_matched_substrings": [{ "length": 5, "offset": 0 }],
            "secondary_text": "KY, USA",
          },
        "terms":
          [
            { "offset": 0, "value": "Paris" },
            { "offset": 7, "value": "KY" },
            { "offset": 11, "value": "USA" },
          ],
        "types": ["locality", "political", "geocode"],
      },
    ],
  "status": "OK",
}

XML

    
<?xml version="1.0" encoding="UTF-8"?>
<AutocompletionResponse>
 <status>OK</status>
 <prediction>
  <description>Paris, France</description>
  <type>locality</type>
  <type>political</type>
  <type>geocode</type>
  <reference>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</reference>
  <term>
   <value>Paris</value>
   <offset>0</offset>
  </term>
  <term>
   <value>France</value>
   <offset>7</offset>
  </term>
  <matched_substring>
   <offset>0</offset>
   <length>5</length>
  </matched_substring>
  <place_id>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</place_id>
  <structured_formatting>
   <description>Paris</description>
   <subdescription>France</subdescription>
   <description_matched_substring>
    <offset>0</offset>
    <length>5</length>
   </description_matched_substring>
  </structured_formatting>
 </prediction>
 <prediction>
  <description>Paris, TX, USA</description>
  <type>locality</type>
  <type>political</type>
  <type>geocode</type>
  <reference>ChIJmysnFgZYSoYRSfPTL2YJuck</reference>
  <term>
   <value>Paris</value>
   <offset>0</offset>
  </term>
  <term>
   <value>TX</value>
   <offset>7</offset>
  </term>
  <term>
   <value>USA</value>
   <offset>11</offset>
  </term>
  <matched_substring>
   <offset>0</offset>
   <length>5</length>
  </matched_substring>
  <place_id>ChIJmysnFgZYSoYRSfPTL2YJuck</place_id>
  <structured_formatting>
   <description>Paris</description>
   <subdescription>TX, USA</subdescription>
   <description_matched_substring>
    <offset>0</offset>
    <length>5</length>
   </description_matched_substring>
  </structured_formatting>
 </prediction>
 <prediction>
  <description>Paris, TN, USA</description>
  <type>locality</type>
  <type>political</type>
  <type>geocode</type>
  <reference>ChIJ4zHP-Sije4gRBDEsVxunOWg</reference>
  <term>
   <value>Paris</value>
   <offset>0</offset>
  </term>
  <term>
   <value>TN</value>
   <offset>7</offset>
  </term>
  <term>
   <value>USA</value>
   <offset>11</offset>
  </term>
  <matched_substring>
   <offset>0</offset>
   <length>5</length>
  </matched_substring>
  <place_id>ChIJ4zHP-Sije4gRBDEsVxunOWg</place_id>
  <structured_formatting>
   <description>Paris</description>
   <subdescription>TN, USA</subdescription>
   <description_matched_substring>
    <offset>0</offset>
    <length>5</length>
   </description_matched_substring>
  </structured_formatting>
 </prediction>
 <prediction>
  <description>Paris, Brant, ON, Canada</description>
  <type>neighborhood</type>
  <type>political</type>
  <type>geocode</type>
  <reference>ChIJsamfQbVtLIgR-X18G75Hyi0</reference>
  <term>
   <value>Paris</value>
   <offset>0</offset>
  </term>
  <term>
   <value>Brant</value>
   <offset>7</offset>
  </term>
  <term>
   <value>ON</value>
   <offset>14</offset>
  </term>
  <term>
   <value>Canada</value>
   <offset>18</offset>
  </term>
  <matched_substring>
   <offset>0</offset>
   <length>5</length>
  </matched_substring>
  <place_id>ChIJsamfQbVtLIgR-X18G75Hyi0</place_id>
  <structured_formatting>
   <description>Paris</description>
   <subdescription>Brant, ON, Canada</subdescription>
   <description_matched_substring>
    <offset>0</offset>
    <length>5</length>
   </description_matched_substring>
  </structured_formatting>
 </prediction>
 <prediction>
  <description>Paris, KY, USA</description>
  <type>locality</type>
  <type>political</type>
  <type>geocode</type>
  <reference>ChIJsU7_xMfKQ4gReI89RJn0-RQ</reference>
  <term>
   <value>Paris</value>
   <offset>0</offset>
  </term>
  <term>
   <value>KY</value>
   <offset>7</offset>
  </term>
  <term>
   <value>USA</value>
   <offset>11</offset>
  </term>
  <matched_substring>
   <offset>0</offset>
   <length>5</length>
  </matched_substring>
  <place_id>ChIJsU7_xMfKQ4gReI89RJn0-RQ</place_id>
  <structured_formatting>
   <description>Paris</description>
   <subdescription>KY, USA</subdescription>
   <description_matched_substring>
    <offset>0</offset>
    <length>5</length>
   </description_matched_substring>
  </structured_formatting>
 </prediction>
</AutocompletionResponse>

   

PlacesAutocompleteResponse

ফিল্ড প্রয়োজনীয় ধরন বিবরণ
প্রয়োজনীয় Array<PlaceAutocompletePrediction>

এতে পূর্বাভাসের একটি অ্যারে থাকে।

আরও তথ্যের জন্য PlaceAutocompletePrediction দেখুন।

প্রয়োজনীয় PlacesAutocompleteStatus

অনুরোধের স্ট্যাটাস থাকে এবং অনুরোধ কেন ব্যর্থ হল তা ট্র্যাক করতে সাহায্য করার জন্য এতে ডিবাগিং তথ্য থাকতে পারে।

আরও তথ্যের জন্য PlacesAutocompleteStatus দেখুন।

ঐচ্ছিক স্ট্রিং

পরিষেবাটি OK< ছাড়া অন্য কোনও স্ট্যাটাস কোড রিটার্ন করলে, রেসপন্স অবজেক্টের মধ্যে একটি অতিরিক্ত error_message ফিল্ড থাকতে পারে। এই ফিল্ডে প্রদত্ত স্ট্যাটাস কোডের পেছনের কারণ সম্পর্কে আরও বিস্তারিত তথ্য থাকে। এই ফিল্ড সবসময় রিটার্ন করা হয় না এবং এর কন্টেন্ট পরিবর্তন করা হতে পারে।

ঐচ্ছিক Array<string>

অনুরোধের স্পেসিফিকেশন সম্পর্কে পরিষেবা অতিরিক্ত তথ্য রিটার্ন করলে, রেসপন্স অবজেক্টের মধ্যে অতিরিক্ত info_messages ফিল্ড থাকতে পারে। এই ফিল্ড শুধুমাত্র সফল অনুরোধের ক্ষেত্রে রিটার্ন করা হয়। এটি সবসময় ফেরত নাও আসতে পারে এবং এর কন্টেন্ট পরিবর্তন করা হতে পারে।

ফলাফলের মধ্যে বিশেষ আগ্রহের বিষয় হল place_id এলিমেন্ট, যা আলাদা কোয়েরি ব্যবহার করে জায়গা সম্পর্কে আরও নির্দিষ্ট বিবরণ অনুরোধ করতে ব্যবহার করা যেতে পারে। জায়গার বিবরণ (লিগ্যাসি) অনুরোধ দেখুন।

XML রেসপন্সে একটিই <AutocompletionResponse> এলিমেন্ট থাকে যার মধ্যে দুই ধরনের চাইল্ড এলিমেন্ট থাকে:

আমরা সাজেস্ট করি যে আপনি json-কে পছন্দের আউটপুট ফ্ল্যাগ হিসেবে ব্যবহার করুন যদি না আপনার অ্যাপ্লিকেশনে কোনও কারণে xml-এর প্রয়োজন হয়। XML ট্রি প্রসেস করার সময় কিছু বিষয় খেয়াল রাখতে হয়, যাতে আপনি সঠিক নোড ও এলিমেন্ট রেফারেন্স করতে পারেন। XML প্রসেস করার ব্যাপারে সাহায্য পেতে XPath-এর মাধ্যমে XML প্রসেস করা দেখুন।

PlacesAutocompleteStatus

পরিষেবা থেকে স্ট্যাটাস কোড পাঠানো হয়েছে।

  • OK API অনুরোধ সফল হয়েছে তা নির্দেশ করছে।
  • ZERO_RESULTS যা ইঙ্গিত করে যে সার্চ সফল হয়েছে কিন্তু কোনও ফলাফল পাওয়া যায়নি। সার্চে যদি কোনও দূরবর্তী লোকেশনে বাউন্ডারি পাস করা হয়, তাহলে এটি হতে পারে।
  • INVALID_REQUEST API অনুরোধটি ভুলভাবে ফর্ম্যাট করা হয়েছে, সাধারণত input প্যারামিটার অনুপস্থিত থাকার কারণে।
  • OVER_QUERY_LIMIT নিম্নলিখিত যেকোনও একটি নির্দেশ করে:
    • আপনি QPS সীমা অতিক্রম করেছেন।
    • আপনার অ্যাকাউন্টে বিলিং চালু করা হয়নি।
    • $২০০ মূল্যের মাসিক ক্রেডিট বা নিজের সেট করা ব্যবহারের সীমা পেরিয়ে গেছেন।
    • প্রদান করা পেমেন্ট পদ্ধতি আর বৈধ নেই (যেমন, ক্রেডিট কার্ডের মেয়াদ শেষ হয়ে গেছে)।
    এই সমস্যার সমাধান কীভাবে করবেন সেই সম্পর্কে আরও জানতে Maps-এর প্রায়শই জিজ্ঞাসিত প্রশ্ন দেখুন।
  • REQUEST_DENIED থেকে বোঝা যাচ্ছে যে আপনার অনুরোধ প্রত্যাখ্যান করা হয়েছে, সাধারণত এই কারণে:
    • অনুরোধে API key নেই।
    • key প্যারামিটারটি সঠিক নয়।
  • UNKNOWN_ERROR যা অজানা সমস্যার ইঙ্গিত দেয়।

Places পরিষেবা কোনও সার্চ থেকে JSON ফলাফল রিটার্ন করলে, সেটি predictions অ্যারের মধ্যে প্লেস করে। এমনকি পরিষেবা কোনও ফলাফল না দেখালেও (যেমন, location রিমোট হলে) এটি তবুও একটি খালি predictions অ্যারে রিটার্ন করে। XML উত্তরে শূন্য বা একাধিক <prediction> এলিমেন্ট থাকে।

PlaceAutocompletePrediction

ফিল্ড প্রয়োজনীয় ধরন বিবরণ
প্রয়োজনীয় স্ট্রিং

ফেরত আসা ফলাফলের জন্য মানুষের-পঠনযোগ্য নাম থাকে। establishment ফলাফলের জন্য, এটি সাধারণত ব্যবসার নাম হয়। এই কন্টেন্টটি যেভাবে আছে সেভাবেই পড়তে হবে। ফর্ম্যাট করা ঠিকানাটি প্রোগ্রামাটিক উপায়ে পার্স করবেন না।

প্রয়োজনীয় Array<PlaceAutocompleteMatchedSubstring>

প্রিডিকশন ফলাফল টেক্সটে, লেখা কোয়েরির লোকেশন বর্ণনা করে এমন সাবস্ট্রিংয়ের তালিকা যাতে বেছে নেওয়া হলে কোয়েরি হাইলাইট করা যায়।

আরও তথ্যের জন্য PlaceAutocompleteMatchedSubstring দেখুন।

প্রয়োজনীয় PlaceAutocompleteStructuredFormat

প্রি-ফর্ম্যাট করা টেক্সট প্রদান করে যা আপনার অটোকমপ্লিট ফলাফলে দেখানো যেতে পারে। এই কন্টেন্টটি যেভাবে আছে সেভাবেই পড়তে হবে। ফর্ম্যাট করা ঠিকানাটি প্রোগ্রামাটিক উপায়ে পার্স করবেন না।

আরও তথ্যের জন্য PlaceAutocompleteStructuredFormat দেখুন।

প্রয়োজনীয় Array<PlaceAutocompleteTerm>

ফিরে আসা বিবরণের প্রতিটি বিভাগকে শনাক্তকারী শব্দের একটি অ্যারে থাকে (বিবরণের একটি বিভাগ সাধারণত কমা দিয়ে শেষ হয় )। অ্যারের প্রতিটি এন্ট্রিতে একটি value ফিল্ড থাকে, যাতে শব্দটির টেক্সট থাকে এবং একটি offset ফিল্ড থাকে, যা বিবরণে এই শব্দটির শুরু হওয়ার পজিশন নির্ধারণ করে, এটি ইউনিকোড অক্ষর দিয়ে পরিমাপ করা হয়।

আরও তথ্যের জন্য PlaceAutocompleteTerm দেখুন।

ঐচ্ছিক পূর্ণসংখ্যা

যাত্রা শুরুর স্থান থেকে সরলরেখায় দূরত্ব, মিটারে। এই ফিল্ডটি শুধুমাত্র origin-এর মাধ্যমে করা অনুরোধের জন্য রিটার্ন করা হয়।

ঐচ্ছিক স্ট্রিং

টেক্সচুয়াল শনাক্তকারী যা কোনও জায়গাকে অনন্যভাবে শনাক্ত করে। জায়গাটি সম্পর্কে তথ্য পেতে, Places API অনুরোধের placeId ফিল্ডে এই শনাক্তকারীটি পাস করুন। প্লেস আইডি সম্পর্কে আরও তথ্যের জন্য, প্লেস আইডি ওভারভিউ দেখুন।

ঐচ্ছিক স্ট্রিং

place_id দেখুন।

ঐচ্ছিক Array<string>

এই জায়গার ক্ষেত্রে প্রযোজ্য এমন ধরনের অ্যারে রয়েছে। যেমন: [ "political", "locality" ] অথবা [ "establishment", "geocode", "beauty_salon" ]. অ্যারেতে একাধিক ভ্যালু থাকতে পারে। জায়গার ধরন সম্পর্কে আরও জানুন।

PlaceAutocompleteMatchedSubstring

ফিল্ড প্রয়োজনীয় ধরন বিবরণ
প্রয়োজনীয় নম্বর

পূর্বানুমান করা ফলাফল টেক্সটে ম্যাচ করা সাবস্ট্রিংয়ের দৈর্ঘ্য।

প্রয়োজনীয় নম্বর

পূর্বাভাস ফলাফলে মিলে যাওয়া সাবস্ট্রিংয়ের শুরুর লোকেশন টেক্সট।

PlaceAutocompleteStructuredFormat

ফিল্ড প্রয়োজনীয় ধরন বিবরণ
প্রয়োজনীয় স্ট্রিং

পূর্বাভাসের মূল টেক্সট থাকে, সাধারণত জায়গার নাম থাকে।

প্রয়োজনীয় Array<PlaceAutocompleteMatchedSubstring>

offset ভ্যালু ও length সহ অ্যারে আছে। এগুলি সাজেস্ট করা টেক্সটে লেখা প্রবেশ করানো শব্দের লোকেশন বর্ণনা করে, যাতে বেছে নেওয়া হলে শব্দটি হাইলাইট করা যায়।

আরও তথ্যের জন্য PlaceAutocompleteMatchedSubstring দেখুন।

ঐচ্ছিক স্ট্রিং

পূর্বানুমানের সেকেন্ডারি টেক্সট থাকে, সাধারণত জায়গার লোকেশন।

ঐচ্ছিক Array<PlaceAutocompleteMatchedSubstring>

offset ভ্যালু ও length সহ অ্যারে আছে। এগুলি সাজেস্ট করা টেক্সটে লেখা প্রবেশ করানো শব্দের লোকেশন বর্ণনা করে, যাতে বেছে নেওয়া হলে শব্দটি হাইলাইট করা যায়।

আরও তথ্যের জন্য PlaceAutocompleteMatchedSubstring দেখুন।

PlaceAutocompleteTerm

ফিল্ড প্রয়োজনীয় ধরন বিবরণ
প্রয়োজনীয় নম্বর

বিবরণে এই শব্দটির শুরুর পজিশন নির্ধারণ করে, যা ইউনিকোড ক্যারেক্টারে পরিমাপ করা হয়

প্রয়োজনীয় স্ট্রিং

শব্দটির টেক্সট।

প্লেস অটোকমপ্লিট (Legacy) অপ্টিমাইজেশন

এই বিভাগে, Place Autocomplete (Legacy) পরিষেবা থেকে সর্বাধিক সুবিধা পেতে আপনাকে সাহায্য করার জন্য পেশাদার পদ্ধতিগুলি বর্ণনা করা হয়েছে।

এখানে কিছু সাধারণ নির্দেশিকা দেওয়া হল:

  • কার্যকর ইউজার ইন্টারফেস ডেভেলপ করার সবচেয়ে দ্রুত উপায় হল Maps JavaScript API প্লেস অটোকমপ্লিট (লিগ্যাসি) উইজেট, Android-এর জন্য Places SDK প্লেস অটোকমপ্লিট (লিগ্যাসি) উইজেট, অথবা iOS-এর জন্য Places SDK প্লেস অটোকমপ্লিট (লিগ্যাসি) UI কন্ট্রোল ব্যবহার করা।
  • শুরু থেকেই প্রয়োজনীয় প্লেস অটোকমপ্লিট (লেগ্যাসি) ডেটা ফিল্ড সম্পর্কে জানুন।
  • লোকেশন বায়াসিং ও লোকেশন বিধিনিষেধ ফিল্ড ঐচ্ছিক হলেও অটো-কমপ্লিট পারফর্ম্যান্সের উপর এর উল্লেখযোগ্য প্রভাব পড়তে পারে।
  • API কোনও সমস্যা দেখালে, আপনার অ্যাপ যাতে ভালোভাবে কাজ করা বন্ধ করতে পারে তা নিশ্চিত করতে সমস্যা হ্যান্ডেল করার সুবিধা ব্যবহার করুন।
  • কোনও বিকল্প বেছে না নিলে আপনার অ্যাপ যেন তা সামলাতে পারে এবং ব্যবহারকারীদের চালিয়ে যাওয়ার সুযোগ দেয় তা নিশ্চিত করুন।

খরচ অপ্টিমাইজ করা সংক্রান্ত পেশাদার পদ্ধতি

খরচ কমানোর প্রাথমিক পদ্ধতি

Place Autocomplete (Legacy) পরিষেবা ব্যবহারের খরচ অপ্টিমাইজ করতে, Place Details (Legacy) এবং Place Autocomplete (Legacy) উইজেটে ফিল্ড মাস্ক ব্যবহার করে শুধুমাত্র আপনার প্রয়োজনীয় Place Autocomplete (Legacy) ডেটা ফিল্ড রিটার্ন করুন।

উন্নত খরচ অপ্টিমাইজেশন

Place Autocomplete (Legacy) প্রোগ্রামেটিক প্রয়োগের কথা বিবেচনা করুন যাতে SKU: Autocomplete - অনুরোধ পিছু দাম অ্যাক্সেস করা যায় এবং Place Details (Legacy)-এর পরিবর্তে বেছে নেওয়া জায়গার জন্য Geocoding API ফলাফল অনুরোধ করা যায়। Geocoding API-এর সাথে পেয়ার করা প্রতি-অনুরোধের মূল্য সেশন-ভিত্তিক (সেশন-ভিত্তিক) মূল্যের চেয়ে বেশি সাশ্রয়ী হয় যদি নিম্নলিখিত দুটি শর্তই পূরণ হয়:

  • আপনি যদি শুধুমাত্র ব্যবহারকারীর বেছে নেওয়া জায়গার অক্ষাংশ ও দ্রাঘিমাংশ বা ঠিকানা চান, তাহলে জিওকোডিং API এই তথ্য প্লেস বিবরণ (Legacy) কলের চেয়ে কম খরচে প্রদান করে।
  • ব্যবহারকারী যদি গড়ে চারটি প্লেস অটোকমপ্লিট (Legacy) প্রেডিকশন সংক্রান্ত অনুরোধ বা তার কম অনুরোধের মধ্যে অটোকমপ্লিট প্রেডিকশন বেছে নেন, তাহলে প্রতি অনুরোধের মূল্য প্রতি সেশনের মূল্যের চেয়ে বেশি সাশ্রয়ী হতে পারে।
আপনার প্রয়োজন অনুযায়ী Place Autocomplete (Legacy) প্রয়োগ বেছে নেওয়ার ব্যাপারে সাহায্য পেতে, নিম্নলিখিত প্রশ্নের যে উত্তরটি আপনার ক্ষেত্রে প্রযোজ্য, সেই ট্যাবটি বেছে নিন।

আপনার অ্যাপ্লিকেশনে কি বেছে নেওয়া পূর্বাভাসের ঠিকানা ও অক্ষাংশ/দ্রাঘিমাংশ ছাড়া অন্য কোনও তথ্য প্রয়োজন?

হ্যাঁ, আরও বিবরণ প্রয়োজন

'জায়গা অটোমেটিক সম্পূর্ণ করা' (Legacy) ফিচারের সাথে সেশন-ভিত্তিক 'জায়গার বিবরণ' (Legacy) ফিচার ব্যবহার করুন।
যেহেতু আপনার অ্যাপ্লিকেশনে প্লেস বিবরণ (লিগ্যাসি) যেমন, জায়গার নাম, ব্যবসার স্ট্যাটাস, বা খোলার সময় প্রয়োজন, তাই প্লেস অটোকমপ্লিট (লিগ্যাসি) প্রয়োগ করার সময় সেশন টোকেন ব্যবহার করতে হবে (প্রোগ্রামাটিক বা JavaScript, Android, বা iOS উইজেটে বিল্ট-ইন) প্রতি সেশন এবং প্রযোজ্য Places Data SKUs, আপনি কোন প্লেস ডেটা ফিল্ডের জন্য অনুরোধ করছেন তার উপর নির্ভর করে।১

উইজেট প্রয়োগ করা
সেশন ম্যানেজমেন্ট অটোমেটিক JavaScript, Android, বা iOS উইজেটে বিল্ট-ইন থাকে। এর মধ্যে জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) এবং বেছে নেওয়া পূর্বাভাসের উপর ভিত্তি করে জায়গার বিবরণ (লিগ্যাসি) সংক্রান্ত অনুরোধ অন্তর্ভুক্ত। আপনার প্রয়োজনীয় fields প্যারামিটার উল্লেখ করতে ভুলবেন না, যাতে আপনি শুধু জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) ডেটা ফিল্ড অনুরোধ করছেন তা নিশ্চিত করা যায়।

প্রোগ্রাম্যাটিক প্রয়োগ
আপনার Place Autocomplete (Legacy) অনুরোধের সাথে সেশন টোকেন ব্যবহার করুন। বেছে নেওয়া পূর্বানুমান সম্পর্কে 'স্থান সম্পর্কিত বিবরণ (পুরনো ভার্সন)' সংক্রান্ত অনুরোধ করার সময়, নিম্নলিখিত প্যারামিটার অন্তর্ভুক্ত করুন:

  1. প্লেস অটোকমপ্লিট (লেগ্যাসি) উত্তর থেকে পাওয়া জায়গার আইডি
  2. Place Autocomplete (Legacy) অনুরোধে ব্যবহৃত সেশন টোকেন
  3. fields প্যারামিটারটি আপনার প্রয়োজনীয় জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) ডেটা ফিল্ড নির্দিষ্ট করে

না, শুধু ঠিকানা ও লোকেশন প্রয়োজন

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

নিম্নলিখিত প্রশ্নের উত্তর দিতে, আপনার অ্যাপ্লিকেশনে প্লেস অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) সংক্রান্ত পূর্বাভাস বেছে নেওয়ার আগে একজন ব্যবহারকারী গড়ে কতগুলি অক্ষর টাইপ করেন তা বিশ্লেষণ করুন।

আপনার ব্যবহারকারীরা কি গড়ে চারটি বা তার কম অনুরোধে কোনও 'প্লেস অটোকমপ্লিট (Legacy)' সাজেশন বেছে নেন?

হ্যাঁ

সেশন টোকেন ছাড়া প্রোগ্রামাটিক পদ্ধতিতে Place Autocomplete (Legacy) প্রয়োগ করুন এবং বেছে নেওয়া জায়গার পূর্বাভাসের জন্য Geocoding API কল করুন।
Geocoding API, ঠিকানা ও অক্ষাংশ/দ্রাঘিমাংশ কোঅর্ডিনেট প্রদান করে। চারটি অটো-কমপ্লিট - প্রতি অনুরোধ অনুরোধের সাথে বেছে নেওয়া স্থান সম্পর্কিত জিওকোডিং API কলের সংখ্যা প্রতি সেশন পিছু প্লেস অটো-কমপ্লিট (Legacy) খরচের চেয়ে কম।১

আপনার ব্যবহারকারীরা যাতে আরও কম অক্ষর লিখে তাদের প্রয়োজনীয় পূর্বাভাস পেতে পারেন, সেই জন্য পারফর্ম্যান্স সংক্রান্ত পেশাদার পদ্ধতি প্রয়োগ করার কথা বিবেচনা করুন।

না

'জায়গা অটোমেটিক সম্পূর্ণ করা' (Legacy) ফিচারের সাথে সেশন-ভিত্তিক 'জায়গার বিবরণ' (Legacy) ফিচার ব্যবহার করুন।
ব্যবহারকারী কোনও জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) সংক্রান্ত পূর্বাভাস বেছে নেওয়ার আগে আপনি যতগুলি অনুরোধ করবেন বলে আশা করেন, তার গড় সংখ্যা সেশন প্রতি দামের থেকে বেশি, তাই আপনার জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) সংক্রান্ত প্রয়োগের ক্ষেত্রে জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) সংক্রান্ত অনুরোধ এবং সংশ্লিষ্ট স্থানের বিবরণ (লিগ্যাসি) সংক্রান্ত অনুরোধ, উভয়ের জন্যই সেশন টোকেন ব্যবহার করা উচিত প্রতি সেশন। ১

উইজেট প্রয়োগ করা
সেশন ম্যানেজমেন্ট অটোমেটিক JavaScript, Android অথবা iOS উইজেটে তৈরি করা হয়। এর মধ্যে বেছে নেওয়া পূর্বাভাষের উপর প্লেস অটোকমপ্লিট (Legacy) অনুরোধ এবং প্লেস বিবরণ (Legacy) অনুরোধ অন্তর্ভুক্ত। আপনি শুধুমাত্র প্রয়োজনীয় ফিল্ডের অনুরোধ করছেন কিনা তা নিশ্চিত করতে, fields প্যারামিটার নির্দিষ্ট করতে ভুলবেন না।

প্রোগ্রামাটিক প্রয়োগ
আপনার Place Autocomplete (Legacy) অনুরোধের সাথে সেশন টোকেন ব্যবহার করুন। বেছে নেওয়া পূর্বানুমান সম্পর্কে 'স্থান সম্পর্কিত বিবরণ (পুরনো)' অনুরোধ করার সময়, নিম্নলিখিত প্যারামিটার অন্তর্ভুক্ত করুন:

  1. প্লেস অটোকমপ্লিট (লেগ্যাসি) উত্তর থেকে পাওয়া জায়গার আইডি
  2. Place Autocomplete (Legacy) অনুরোধে ব্যবহৃত সেশন টোকেন
  3. fields প্যারামিটার যা প্রাথমিক ডেটা ফিল্ড নির্দিষ্ট করে যেমন ঠিকানা ও জ্যামিতি

প্লেস অটোকমপ্লিট (লিগ্যাসি) অনুরোধে দেরি করার কথা বিবেচনা করুন
আপনি এমন কৌশল অবলম্বন করতে পারেন, যেমন ব্যবহারকারী প্রথম তিন বা চারটি অক্ষর টাইপ না করা পর্যন্ত প্লেস অটোকমপ্লিট (লিগ্যাসি) অনুরোধে দেরি করা, যাতে আপনার অ্যাপ্লিকেশন কম অনুরোধ করে। যেমন, ব্যবহারকারী তৃতীয় অক্ষর টাইপ করার পরে প্রতিটি অক্ষরের জন্য Place Autocomplete (Legacy) অনুরোধ করার অর্থ হল, ব্যবহারকারী সাতটি অক্ষর টাইপ করে এমন একটি সাজেশন বেছে নিলে যার জন্য আপনি একটি Geocoding API অনুরোধ করেন, তাহলে মোট খরচ হবে ৪টি Place Autocomplete (Legacy) প্রতি অনুরোধ + Geocoding।১

অনুরোধে দেরি করলে, আপনার গড় প্রোগ্রামমেটিক অনুরোধ যদি চারের নিচে নেমে যায়, তাহলে আপনি জিওকোডিং API সহ পারফর্ম্যান্স ভাল হওয়া প্লেস অটোকমপ্লিট (Legacy) প্রয়োগ করার নির্দেশিকা অনুসরণ করতে পারেন। মনে রাখবেন, অনুরোধ পাঠাতে দেরি হলে ব্যবহারকারী মনে করতে পারেন যে লেটেন্সি হচ্ছে, কারণ তিনি হয়ত প্রতিটি নতুন কীস্ট্রোকের সাথে সাথে সাজেশন দেখতে চান।

আপনার ব্যবহারকারীরা যাতে কম অক্ষরের মধ্যে তাদের প্রয়োজনীয় পূর্বাভাস পান, সেই জন্য পারফর্ম্যান্স সংক্রান্ত পেশাদার পদ্ধতি প্রয়োগ করার কথা বিবেচনা করুন।


  1. খরচ সম্পর্কে জানতে, Google Maps Platform-এর দামের তালিকা দেখুন।

পারফর্ম্যান্স সংক্রান্ত পেশাদার পদ্ধতি

নিচে উল্লেখ করা নির্দেশিকায় 'জায়গা অটোমেটিক সম্পূর্ণ করা (Legacy)' ফিচারের পারফর্ম্যান্স অপ্টিমাইজ করার উপায় বর্ণনা করা হয়েছে:

  • আপনার Place Autocomplete (Legacy) ইমপ্লিমেন্টেশনে দেশ সংক্রান্ত বিধিনিষেধ, লোকেশন বায়াসিং, এবং (প্রোগ্রামাটিক ইমপ্লিমেন্টেশনের জন্য) ভাষার অগ্রাধিকার যোগ করুন। উইজেটের ক্ষেত্রে ভাষার পছন্দ সেট করার প্রয়োজন নেই কারণ এটি ব্যবহারকারীর ব্রাউজার বা মোবাইল ডিভাইস থেকে ভাষার পছন্দ বেছে নেয়।
  • Place Autocomplete (Legacy)-এর সাথে ম্যাপ থাকলে, আপনি ম্যাপ ভিউপোর্ট অনুযায়ী লোকেশনকে পক্ষপাতদুষ্ট করতে পারবেন।
  • এমন পরিস্থিতিতে যখন কোনও ব্যবহারকারী জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) সংক্রান্ত পূর্বাভাসের মধ্যে থেকে কোনও একটি বেছে নেন না, সাধারণত কারণ সেইসব পূর্বাভাসের মধ্যে কোনওটিই কাঙ্ক্ষিত ফলাফল-ঠিকানা নয়, আপনি আরও প্রাসঙ্গিক ফলাফল পাওয়ার চেষ্টা করতে ব্যবহারকারীর আসল ইনপুট আবার ব্যবহার করতে পারেন:
    • আপনি যদি আশা করেন যে ব্যবহারকারী শুধুমাত্র ঠিকানা সংক্রান্ত তথ্য লিখবেন, তাহলে Geocoding API-তে কল করার সময় ব্যবহারকারীর আসল ইনপুট আবার ব্যবহার করুন।
    • আপনি যদি আশা করেন যে ব্যবহারকারী কোনও নির্দিষ্ট জায়গার নাম বা ঠিকানা লিখে কোয়েরি করবেন, তাহলে 'জায়গার বিবরণ (Legacy)' অনুরোধ ব্যবহার করুন। ফলাফল যদি শুধুমাত্র একটি নির্দিষ্ট অঞ্চলে প্রত্যাশিত হয়, তাহলে লোকেশন বায়াসিং ব্যবহার করুন।
    Geocoding API-তে ফিরে যাওয়ার জন্য উপযুক্ত অন্যান্য পরিস্থিতিগুলির মধ্যে এগুলি অন্তর্ভুক্ত:
    • ব্যবহারকারীরা সাবপ্রিমাইজ ঠিকানা ইনপুট করছেন, যেমন কোনও বিল্ডিংয়ের মধ্যে নির্দিষ্ট ইউনিট বা অ্যাপার্টমেন্টের ঠিকানা। যেমন, চেক ঠিকানা "Stroupežnického 3191/17, Praha" প্লেস অটোকমপ্লিট (Legacy)-এ আংশিক পূর্বাভাস দেয়।
    • ব্যবহারকারীরা নিউ ইয়র্ক সিটিতে "23-30 29th St, Queens" বা হাওয়াইয়ের কাউয়াই দ্বীপে "47-380 Kamehameha Hwy, Kaneohe"-এর মতো রোড-সেগমেন্ট প্রিফিক্স সহ ঠিকানা ইনপুট করছেন।

লোকেশন বায়াসিং

location প্যারামিটার ও radius প্যারামিটার পাস করে নির্দিষ্ট এলাকার ফলাফলকে পক্ষপাতদুষ্ট করে। এটি প্লেস অটোকমপ্লিট (Legacy)-কে নির্দেশ দেয় যে, সংজ্ঞায়িত এলাকার মধ্যে ফলাফল দেখাতে অগ্রাধিকার দিতে হবে। নির্দিষ্ট করা এলাকার বাইরের ফলাফল এখনও দেখানো হতে পারে। আপনি includedRegionCodes প্যারামিটার ব্যবহার করে ফলাফল ফিল্টার করতে পারেন যাতে শুধুমাত্র নির্দিষ্ট দেশের মধ্যে থাকা জায়গাগুলি দেখানো হয়।

লোকেশন সংক্রান্ত বিধিনিষেধ

locationRestriction প্যারামিটার পাস করে ফলাফলকে নির্দিষ্ট এলাকায় সীমাবদ্ধ করুন।

এছাড়াও, আপনি location ও radius প্যারামিটার দ্বারা সংজ্ঞায়িত অঞ্চলে ফলাফল সীমাবদ্ধ করতে পারেন, এর জন্য আপনাকে strictbounds প্যারামিটার যোগ করতে হবে। এটি প্লেস অটোকমপ্লিট (Legacy)-কে সেই অঞ্চলের মধ্যে শুধুমাত্র ফলাফল রিটার্ন করার নির্দেশ দেয়।