প্লেসেস লাইব্রেরি

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

এক নজরে

Places Library, Maps JavaScript API-এর ফাংশন আপনার অ্যাপ্লিকেশনকে নির্দিষ্ট এলাকার মধ্যে থাকা জায়গা (এই API-তে প্রতিষ্ঠান, ভৌগোলিক লোকেশন বা আগ্রহের উল্লেখযোগ্য পয়েন্ট হিসেবে সংজ্ঞায়িত) সার্চ করার সুবিধা দেয়, যেমন ম্যাপের সীমানা বা নির্দিষ্ট পয়েন্টের আশেপাশে।

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

শুরু করা

আপনি Maps JavaScript API বা JavaScript সম্পর্কে না জানলে, শুরু করার আগে JavaScript সম্পর্কে জেনে নেওয়া এবং API কী পাওয়া সম্পর্কে জেনে নেওয়ার সাজেশন আমরা দিই।

লাইব্রেরি লোড করুন

Places পরিষেবা হল একটি স্বয়ংসম্পূর্ণ লাইব্রেরি, যা মূল Maps JavaScript API কোড থেকে আলাদা। এই লাইব্রেরিতে থাকা কার্যকারিতা ব্যবহার করতে, আপনাকে প্রথমে Maps API বুটস্ট্র্যাপ URL-এ libraries প্যারামিটার ব্যবহার করে এটি লোড করতে হবে:

<script async
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>

আরও তথ্যের জন্য লাইব্রেরি ওভারভিউ দেখুন।

API key-এর API সংক্রান্ত বিধিনিষেধের তালিকায় Places API (Legacy) যোগ করুন

আপনার API কী-তে API সংক্রান্ত বিধিনিষেধ প্রয়োগ করলে, API কী-এর ব্যবহার এক বা একাধিক API বা SDK-তে সীমিত হয়ে যায়। API কী-এর সাথে যুক্ত API বা SDK-তে করা অনুরোধ প্রসেস করা হবে। API কী-এর সাথে যুক্ত নয় এমন API বা SDK-তে করা অনুরোধ ব্যর্থ হবে। Places Library, Maps JavaScript API-এর সাথে ব্যবহারের জন্য API কী সীমাবদ্ধ করতে:
  1. Google Cloud Console-এ যান।
  2. প্রোজেক্ট ড্রপ-ডাউনে ক্লিক করে সেই প্রোজেক্ট বেছে নিন যাতে আপনার সুরক্ষিত করতে চাওয়া API কী রয়েছে।
  3. মেনু বোতামে ক্লিক করুন এবং Google Maps Platform > ক্রেডেনশিয়াল বিকল্প বেছে নিন।
  4. ক্রেডেনশিয়াল পৃষ্ঠায়, আপনি যে API কী সুরক্ষিত করতে চান তার নামে ক্লিক করুন।
  5. API কী-তে বিধিনিষেধ আরোপ করুন এবং নাম পরিবর্তন করুন পৃষ্ঠায়, বিধিনিষেধ সেট করুন:
    • API সংক্রান্ত বিধিনিষেধ
      • কী-তে বিধিনিষেধ আরোপ করুন বিকল্প বেছে নিন।
      • API বেছে নিন বিকল্পে ক্লিক করে Maps JavaScript API এবং Places API (Legacy), দুটিই বেছে নিন।
        (কোনও API তালিকাভুক্ত না থাকলে, আপনাকে সেটি চালু করতে হবে।)
  6. সেভ করুন বিকল্পে ক্লিক করুন।

ব্যবহারের সীমা ও নীতি

কোটা

Places API-এর ব্যবহারের সীমা সংক্রান্ত ডকুমেন্টেশনে যেমন বর্ণনা করা হয়েছে, Places API-এর সাথে Places Library ব্যবহারের কোটা শেয়ার করে।

নীতি

Places Library, Maps JavaScript API-এর ব্যবহার অবশ্যই Places API-এর জন্য বর্ণিত নীতি অনুযায়ী হতে হবে।

জায়গা সার্চ করা

Places পরিষেবার মাধ্যমে আপনি নিম্নলিখিত ধরনের সার্চ করতে পারবেন:

ফেরত পাঠানো তথ্যে প্রতিষ্ঠান — যেমন রেস্তোরাঁ, স্টোর এবং অফিস — এবং 'জিওকোড' ফলাফল অন্তর্ভুক্ত থাকতে পারে, যা ঠিকানা, রাজনৈতিক এলাকা যেমন শহর এবং নগর এবং অন্যান্য আগ্রহের পয়েন্ট নির্দেশ করে।

Find Place (Legacy) সংক্রান্ত অনুরোধ

Find Place অনুরোধের মাধ্যমে আপনি টেক্সট কোয়েরি বা ফোন নম্বর ব্যবহার করে কোনও জায়গা সার্চ করতে পারবেন। Find Place অনুরোধ দুই ধরনের হয়:

কোয়েরি থেকে জায়গা খুঁজুন

Find Place from Query টেক্সট ইনপুট নেয় এবং একটি জায়গা দেখায়। ইনপুট যেকোনও ধরনের জায়গার ডেটা হতে পারে, যেমন ব্যবসার নাম বা ঠিকানা। কোয়েরি অনুরোধ থেকে জায়গা খুঁজুন তৈরি করতে, PlacesService-এর findPlaceFromQuery() পদ্ধতি কল করুন, যা নিম্নলিখিত প্যারামিটারগুলি গ্রহণ করে:

  • query (প্রয়োজনীয়) যে টেক্সট স্ট্রিংয়ে সার্চ করতে হবে, যেমন: "রেস্তোরাঁ" বা "১২৩ মেইন স্ট্রিট"। এটি অবশ্যই কোনও জায়গার নাম, ঠিকানা বা প্রতিষ্ঠানের বিভাগ হতে হবে। অন্য যেকোনও ধরনের ইনপুট দিলে সমস্যা হতে পারে এবং সঠিক ফলাফল পাওয়ার কোনও গ্যারেন্টি নেই। Places API এই স্ট্রিংয়ের ভিত্তিতে সম্ভাব্য ম্যাচ রিটার্ন করবে এবং সেগুলির প্রাসঙ্গিকতা অনুযায়ী ফলাফল সাজাবে।
  • fields (প্রয়োজনীয়) এক বা একাধিক ফিল্ড যা রিটার্ন করার জন্য জায়গার ডেটার ধরন নির্দিষ্ট করে।
  • locationBias (ঐচ্ছিক) সার্চ করার জন্য এলাকা নির্ধারণকারী স্থানাঙ্ক। এটি নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
    • অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্কের একটি সেট যা LatLngLiteral বা LatLng অবজেক্ট হিসেবে উল্লেখ করা হয়েছে
    • আয়তক্ষেত্রাকার বাউন্ড (দুটি lat/lng পেয়ার বা একটি LatLngBounds অবজেক্ট)
    • অক্ষাংশ/দ্রাঘিমাংশের উপর কেন্দ্র করে ব্যাসার্ধ (মিটারে)

এছাড়াও, আপনাকে findPlaceFromQuery()-এ কলব্যাক পদ্ধতি পাস করতে হবে, যাতে ফলাফল অবজেক্ট ও google.maps.places.PlacesServiceStatus রেসপন্স ম্যানেজ করা যায়।

নিচের উদাহরণে findPlaceFromQuery()-এ করা একটি কল দেখানো হয়েছে, যেখানে "Museum of Contemporary Art Australia" সার্চ করা হচ্ছে এবং name ও geometry ফিল্ড অন্তর্ভুক্ত করা হয়েছে।

var map;
var service;
var infowindow;

function initMap() {
  var sydney = new google.maps.LatLng(-33.867, 151.195);

  infowindow = new google.maps.InfoWindow();

  map = new google.maps.Map(
      document.getElementById('map'), {center: sydney, zoom: 15});

  var request = {
    query: 'Museum of Contemporary Art Australia',
    fields: ['name', 'geometry'],
  };

  var service = new google.maps.places.PlacesService(map);

  service.findPlaceFromQuery(request, function(results, status) {
    if (status === google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
      map.setCenter(results[0].geometry.location);
    }
  });
}
উদাহরণ দেখুন

ফোন নম্বর থেকে জায়গা খোঁজা

Find Place from Phone Number এপিআই ফোন নম্বর নিয়ে জায়গার তথ্য দেখায়। ফোন নম্বর থেকে জায়গা খোঁজার অনুরোধ করতে, PlacesService-এর findPlaceFromPhoneNumber() মেথড কল করুন, যা নিম্নলিখিত প্যারামিটার গ্রহণ করে:

  • phoneNumber (প্রয়োজনীয়) E.164 ফর্ম্যাটে ফোন নম্বর।
  • fields (প্রয়োজনীয়) এক বা একাধিক ফিল্ড যা রিটার্ন করার জন্য জায়গার ডেটার ধরন নির্দিষ্ট করে।
  • locationBias (ঐচ্ছিক) সার্চ করার জন্য এলাকা নির্ধারণকারী স্থানাঙ্ক। এটি নিম্নলিখিতগুলির মধ্যে যেকোনও একটি হতে পারে:
    • LatLngLiteral বা LatLng অবজেক্ট হিসেবে নির্দিষ্ট করা অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্কের সেট
    • আয়তক্ষেত্রাকার সীমানা (চারটি অক্ষাংশ/দ্রাঘিমাংশ পয়েন্ট, বা একটি LatLngBounds অবজেক্ট)
    • অক্ষাংশ/দ্রাঘিমাংশের উপর কেন্দ্র করে ব্যাসার্ধ (মিটারে)

এছাড়াও, আপনাকে findPlaceFromPhoneNumber()-এ কলব্যাক পদ্ধতি পাস করতে হবে, যাতে ফলাফল অবজেক্ট ও google.maps.places.PlacesServiceStatus রেসপন্স ম্যানেজ করা যায়।

ফিল্ড (জায়গা খোঁজার পদ্ধতি)

ফেরত পাঠানোর জন্য জায়গার ডেটার ধরনের অ্যারে নির্দিষ্ট করতে fields প্যারামিটার ব্যবহার করুন। যেমন: fields: ['formatted_address', 'opening_hours', 'geometry']। কম্পাউন্ড ভ্যালু উল্লেখ করার সময় ডট ব্যবহার করুন। যেমন: opening_hours.weekday_text।

ফিল্ডগুলি জায়গা সার্চ করার ফলাফল-এর সাথে সম্পর্কিত এবং তিনটি বিলিং বিভাগে বিভক্ত: বেসিক, পরিচিতি এবং পরিবেশ। বেসিক ফিল্ডের জন্য বেস রেটে বিল করা হয় এবং কোনও অতিরিক্ত চার্জ লাগে না। Contact and Atmosphere fields are billed at a higher rate. আরও তথ্যের জন্য প্রাইসিং শিট দেখুন। ফিল্ডের জন্য অনুরোধ করা হোক বা না হোক, প্রতিটি কলের সাথে অ্যাট্রিবিউশন (html_attributions) সবসময় ফেরত দেওয়া হয়।

প্রাথমিক

বেসিক বিভাগে নিম্নলিখিত ফিল্ড অন্তর্ভুক্ত থাকে:
business_status, formatted_address, geometry, icon,icon_mask_base_uri, icon_background_color, name, permanently_closed (বন্ধ করা হয়েছে), photos, place_id, plus_code, types

পরিচিতি

যোগাযোগের বিভাগে নিম্নলিখিত ফিল্ড অন্তর্ভুক্ত থাকে: opening_hours
(বন্ধ করা হয়েছে Places Library, Maps JavaScript API-তে। opening_hours ফলাফল পেতে জায়গার বিবরণ সংক্রান্ত অনুরোধ ব্যবহার করুন)।

পরিবেশ

পরিবেশ বিভাগে নিম্নলিখিত ফিল্ড অন্তর্ভুক্ত: price_level, rating, user_ratings_total

findPlaceFromQuery() এবং findPlaceFromPhoneNumber() পদ্ধতির প্রত্যেকটি একই সেট ফিল্ড নেয় এবং তাদের সংশ্লিষ্ট উত্তরে একই ফিল্ড ফেরত দিতে পারে।

লোকেশন বায়াস সেট করুন (জায়গা খোঁজার পদ্ধতি)

locationBias প্যারামিটার ব্যবহার করে Find Place-কে কোনও নির্দিষ্ট এলাকার ফলাফল দেখাতে বলুন। আপনি নিম্নলিখিত উপায়ে locationBias সেট করতে পারবেন:

নির্দিষ্ট এলাকার জন্য পক্ষপাতমূলক ফলাফল:

locationBias: {lat: 37.402105, lng: -122.081974}

সার্চ করার জন্য একটি আয়তক্ষেত্রাকার এলাকা নির্দিষ্ট করুন:

locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}

এছাড়াও, আপনি LatLngBounds ব্যবহার করতে পারবেন।

সার্চ করার জন্য ব্যাসার্ধ (মিটারে) নির্ধারণ করুন, যা কোনও নির্দিষ্ট এলাকার কেন্দ্রে থাকবে:

locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}

আশেপাশে সার্চের অনুরোধ

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

  • একটি LatLngBounds।
  • একটি বৃত্তাকার এলাকা যা location প্রপার্টির কম্বিনেশন হিসেবে সংজ্ঞায়িত করা হয় — বৃত্তের কেন্দ্রকে একটি LatLng অবজেক্ট হিসেবে নির্দিষ্ট করে — এবং একটি ব্যাসার্ধ, মিটারে পরিমাপ করা হয়।

PlacesService-এর nearbySearch() মেথডে কল করার মাধ্যমে আশেপাশের জায়গা সার্চ করার প্রসেস শুরু হয়, যা PlaceResult অবজেক্টের একটি অ্যারে ফেরত পাঠাবে। মনে রাখবেন যে nearbySearch() পদ্ধতিটি 3.9 ভার্সন থেকে search() পদ্ধতিকে প্রতিস্থাপন করে।

service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

এই পদ্ধতিতে নিম্নলিখিত ফিল্ড সহ অনুরোধ করা হয়:

  • এগুলির মধ্যে যেকোনও একটি:
    • bounds, যা অবশ্যই একটি google.maps.LatLngBounds অবজেক্ট হতে হবে যা আয়তাকার সার্চ এরিয়াকে সংজ্ঞায়িত করে। বাউন্ডস এলাকার জন্য সর্বাধিক সমর্থিত কর্ণ দূরত্ব প্রায় ১০০,০০০ মিটার।
    • একটি location এবং একটি radius; প্রথমটি একটি google.maps.LatLng অবজেক্ট নেয় এবং পরেরটি একটি সাধারণ পূর্ণসংখ্যা নেয়, যা মিটারে বৃত্তের ব্যাসার্ধকে দেখায়। সর্বাধিক অনুমোদিত ব্যাসার্ধ হল ৫০,০০০ মিটার। মনে রাখবেন যে rankBy-এর মান DISTANCE হিসেবে সেট করা থাকলে, আপনাকে অবশ্যই location নির্দিষ্ট করতে হবে, তবে আপনি radius বা bounds নির্দিষ্ট করতে পারবেন না।
  • keyword (ঐচ্ছিক) — নাম, ধরন ও ঠিকানা সহ উপলভ্য সব ফিল্ডের সাথে ম্যাচ করার জন্য একটি শব্দ, তবে এর মধ্যেই সীমিত নয়, পাশাপাশি গ্রাহকের রিভিউ ও অন্যান্য থার্ড-পার্টি কন্টেন্ট।
  • minPriceLevel এবং maxPriceLevel (ঐচ্ছিক) — নির্দিষ্ট রেঞ্জের মধ্যে থাকা জায়গাগুলিই শুধু ফলাফল হিসেবে দেখায়। সঠিক ভ্যালু ০ (সবচেয়ে সস্তা) থেকে ৪ (সবচেয়ে দামি) রেঞ্জের মধ্যে থাকে, এই দুটি ধরে।
  • name বন্ধ করা হয়েছে। keyword-এর সমতুল্য। এই ফিল্ডের মান keyword ফিল্ডের মানের সাথে একত্রিত করা হয় এবং একই সার্চ স্ট্রিংয়ের অংশ হিসেবে পাস করা হয়।
  • openNow (ঐচ্ছিক) — একটি বুলিয়ান ভ্যালু, যা ইঙ্গিত করে যে Places পরিষেবার শুধু সেইসব জায়গার তথ্যই দেখানো উচিত যেগুলি কোয়েরি পাঠানোর সময় ব্যবসার জন্য খোলা থাকে। Google Places ডেটাবেসে যেসব জায়গার খোলা থাকার সময় উল্লেখ করা নেই, আপনার কোয়েরিতে এই প্যারামিটার অন্তর্ভুক্ত করলে সেইসব জায়গা দেখানো হবে না। openNow-কে false-এ সেট করলে কোনও প্রভাব পড়ে না।
  • rankBy (ঐচ্ছিক) — ফলাফল যে ক্রমে তালিকাভুক্ত করা হবে তা নির্দিষ্ট করে। সম্ভাব্য ভ্যালুগুলি হল:
    • google.maps.places.RankBy.PROMINENCE (ডিফল্ট)। এই বিকল্পটি গুরুত্বের ভিত্তিতে ফলাফল সাজায়। র‌্যাঙ্কিংয়ের ক্ষেত্রে সেট করা ব্যাসার্ধের মধ্যে থাকা বিশিষ্ট জায়গাগুলিকে বেশি গুরুত্ব দেওয়া হবে, আশেপাশের জায়গাগুলি মিললেও সেগুলি কম বিশিষ্ট হলে কম গুরুত্ব পাবে। Google-এর ইন্ডেক্সে কোনও জায়গার র‍্যাঙ্কিং, বিশ্বব্যাপী জনপ্রিয়তা এবং অন্যান্য বিষয়ের দ্বারা প্রাধান্য প্রভাবিত হতে পারে। google.maps.places.RankBy.PROMINENCE উল্লেখ করা থাকলে, radius প্যারামিটারটি প্রয়োজন।
    • google.maps.places.RankBy.DISTANCE. এই বিকল্পটি নির্দিষ্ট location (প্রয়োজনীয়) থেকে দূরত্বের ভিত্তিতে ছোট থেকে বড় ক্রমে ফলাফল সাজায়। মনে রাখবেন যে আপনি RankBy.DISTANCE উল্লেখ করলে কাস্টম bounds এবং/অথবা radius উল্লেখ করতে পারবেন না। আপনি RankBy.DISTANCE উল্লেখ করলে, keyword, name বা type-এর মধ্যে এক বা একাধিক প্রয়োজন।
  • type — নির্দিষ্ট করা ধরনের সাথে ম্যাচ করা জায়গার মধ্যে ফলাফল সীমাবদ্ধ করে। শুধুমাত্র একটি ধরন নির্দিষ্ট করা যেতে পারে (একাধিক ধরন প্রদান করা হলে, প্রথম এন্ট্রির পরে সব ধরন উপেক্ষা করা হয়)। কাজ করে এমন ধরনের তালিকা দেখুন।

এছাড়াও, আপনাকে nearbySearch()-এ কলব্যাক পদ্ধতি পাস করতে হবে, যাতে ফলাফল অবজেক্ট এবং google.maps.places.PlacesServiceStatus রেসপন্স ম্যানেজ করা যায়।

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: 500,
    type: 'restaurant'
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

উদাহরণ দেখুন

টেক্সট সার্চের অনুরোধ

Google Places টেক্সট সার্চ পরিষেবা হল একটি ওয়েব পরিষেবা যা স্ট্রিংয়ের উপর ভিত্তি করে এক সেট জায়গা সম্পর্কে তথ্য প্রদান করে — যেমন "নিউ ইয়র্কে পিৎজা" অথবা "অটোয়ার কাছাকাছি জুতোর দোকান"। পরিষেবাটি টেক্সট স্ট্রিং এবং সেট করা যেকোনও লোকেশন বায়াসের সাথে মেলে এমন জায়গার তালিকা সহ উত্তর দেয়। সার্চের উত্তরে জায়গার তালিকা অন্তর্ভুক্ত থাকবে। আপনি উত্তরে দেখানো যেকোনও জায়গা সম্পর্কে আরও তথ্য পেতে জায়গার বিবরণ সংক্রান্ত অনুরোধ পাঠাতে পারেন।

PlacesService-এর textSearch() মেথডে কল করার মাধ্যমে টেক্সট সার্চ শুরু করা হয়।

service = new google.maps.places.PlacesService(map);
service.textSearch(request, callback);

এই পদ্ধতিতে নিম্নলিখিত ফিল্ড সহ অনুরোধ করা হয়:

  • query (প্রয়োজনীয়) যে টেক্সট স্ট্রিংয়ে সার্চ করতে হবে, যেমন: "রেস্তোরাঁ" বা "১২৩ মেইন স্ট্রিট"। এটি অবশ্যই কোনও জায়গার নাম, ঠিকানা বা প্রতিষ্ঠানের বিভাগ হতে হবে। অন্য যেকোনও ধরনের ইনপুট সমস্যা তৈরি করতে পারে এবং সঠিক ফলাফল দেখানোর কোনও গ্যারেন্টি নেই। Places পরিষেবা এই স্ট্রিংয়ের ভিত্তিতে সম্ভাব্য ম্যাচ দেখাবে এবং প্রাসঙ্গিকতার ভিত্তিতে ফলাফল সাজাবে। সার্চের অনুরোধে type প্যারামিটারও ব্যবহার করা হলে এই প্যারামিটারটি ঐচ্ছিক হয়ে যায়।
  • ঐচ্ছিক:
    • openNow — একটি বুলিয়ান ভ্যালু, যা ইঙ্গিত করে যে Places পরিষেবার শুধু সেইসব জায়গার তথ্যই দেখানো উচিত যেগুলি কোয়েরি পাঠানোর সময় ব্যবসার জন্য খোলা আছে। Google Places ডেটাবেসে যেসব জায়গার খোলা থাকার সময় উল্লেখ করা নেই, আপনার কোয়েরিতে এই প্যারামিটার অন্তর্ভুক্ত করলে সেগুলি দেখানো হবে না। openNow-কে false-এ সেট করলে কোনও প্রভাব পড়ে না।
    • minPriceLevel এবং maxPriceLevel — নির্দিষ্ট দামের লেভেলের মধ্যে থাকা জায়গাগুলিই শুধু দেখায়। সঠিক ভ্যালু ০ (সবচেয়ে সস্তা) থেকে ৪ (সবচেয়ে দামি) রেঞ্জের মধ্যে থাকে।
    • এগুলির মধ্যে যেকোনও একটি:
      • bounds, যা অবশ্যই একটি google.maps.LatLngBounds অবজেক্ট হতে হবে যা আয়তাকার সার্চ এরিয়াকে সংজ্ঞায়িত করে। সীমানা এলাকার জন্য সর্বাধিক সমর্থিত কর্ণ দূরত্ব প্রায় ১০০,০০০ মিটার।
      • একটি location এবং একটি radius — আপনি location এবং একটি radius প্যারামিটার পাস করে নির্দিষ্ট বৃত্তে ফলাফল পক্ষপাতদুষ্ট করতে পারেন। এটি Places পরিষেবাকে সেই বৃত্তের মধ্যে ফলাফল দেখানোর জন্য নির্দেশ দেবে। নির্দিষ্ট করা এলাকার বাইরেও ফলাফল দেখানো হতে পারে। লোকেশন google.maps.LatLng অবজেক্ট নেয় এবং ব্যাসার্ধ একটি সাধারণ পূর্ণসংখ্যা নেয়, যা মিটারে বৃত্তের ব্যাসার্ধ প্রতিনিধিত্ব করে। সর্বাধিক অনুমোদিত ব্যাসার্ধ হল ৫০,০০০ মিটার।
    • type — নির্দিষ্ট করা ধরনের সাথে ম্যাচ করে এমন জায়গায় ফলাফল সীমাবদ্ধ করে। শুধুমাত্র একটি ধরন উল্লেখ করা যেতে পারে (একাধিক ধরন প্রদান করা হলে, প্রথম এন্ট্রির পরে সব ধরন উপেক্ষা করা হয়)। কাজ করে এমন ধরনের তালিকা দেখুন।

এছাড়াও, আপনাকে textSearch()-এ কলব্যাক পদ্ধতি পাস করতে হবে, যাতে ফলাফল অবজেক্ট এবং google.maps.places.PlacesServiceStatus রেসপন্স ম্যানেজ করা যায়।

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: 500,
    query: 'restaurant'
  };

  service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      createMarker(results[i]);
    }
  }
}

সার্চের উত্তর

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

PlacesServiceStatus রেসপন্স অবজেক্টে অনুরোধের স্ট্যাটাস থাকে এবং এতে ডিবাগিং সংক্রান্ত তথ্য থাকতে পারে যা আপনাকে জায়গার অনুরোধ কেন ব্যর্থ হয়েছে তা ট্র্যাক করতে সাহায্য করে। সম্ভাব্য স্ট্যাটাস ভ্যালু হল:

  • INVALID_REQUEST: এই অনুরোধটি সঠিক নয়।
  • OK: উত্তরে সঠিক ফলাফল আছে।
  • OVER_QUERY_LIMIT: ওয়েবপেজটি তার অনুরোধের কোটা ছাড়িয়ে গেছে।
  • REQUEST_DENIED: ওয়েবপেজকে PlacesService ব্যবহার করার অনুমতি দেওয়া হয়নি।
  • UNKNOWN_ERROR: সার্ভারে সমস্যার কারণে PlacesService অনুরোধ প্রসেস করা যায়নি। আপনি আবার চেষ্টা করলে অনুরোধটি সফল হতে পারে।
  • ZERO_RESULTS: এই অনুরোধের জন্য কোনও ফলাফল পাওয়া যায়নি।

জায়গা সার্চ করার ফলাফল

findPlace(), nearbySearch() এবং textSearch() ফাংশন PlaceResult অবজেক্টের অ্যারে রিটার্ন করে।

প্রতিটি PlaceResult অবজেক্টে নিম্নলিখিত প্রপার্টি থাকতে পারে:

  • business_status জায়গাটি কোনও ব্যবসা হলে, সেটির অপারেশনাল স্ট্যাটাস দেখায়। এতে নিম্নলিখিত ভ্যালুর মধ্যে একটি থাকতে পারে:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    কোনও ডেটা না থাকলে, business_status রিটার্ন করা হয় না।
  • formatted_address হল একটি স্ট্রিং যাতে এই জায়গার মানুষের-পঠনযোগ্য ঠিকানা থাকে। formatted_address প্রপার্টি শুধুমাত্র টেক্সট সার্চ-এর জন্য রিটার্ন করা হয়।

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

    ফর্ম্যাট করা ঠিকানা এক বা একাধিক ঠিকানার কম্পোনেন্ট নিয়ে গঠিত। যেমন, "111 8th Avenue, New York, NY" ঠিকানায় নিম্নলিখিত উপাদানগুলি রয়েছে: "111" (রাস্তার নম্বর), "8th Avenue" (রুট), "New York" (শহর) এবং "NY" (মার্কিন যুক্তরাষ্ট্রের রাজ্য)।

    প্রোগ্রাম্যাটিক্যালি ফর্ম্যাট করা ঠিকানা পার্স করবেন না। পরিবর্তে, আপনাকে ঠিকানার আলাদা আলাদা অংশ ব্যবহার করতে হবে, যা API রেসপন্সে ফর্ম্যাট করা ঠিকানা ফিল্ডের পাশাপাশি অন্তর্ভুক্ত থাকে।

  • geometry: জায়গার জ্যামিতি-সম্পর্কিত তথ্য। এর মধ্যে রয়েছে:
    • location সেই জায়গার অক্ষাংশ ও দ্রাঘিমাংশ প্রদান করে।
    • viewport এই জায়গাটি দেখার সময় ম্যাপে পছন্দের ভিউপোর্ট নির্ধারণ করে।
  • permanently_closed (বন্ধ করা হয়েছে) হল একটি বুলিয়ান ফ্ল্যাগ যা নির্দেশ করে যে জায়গাটি স্থায়ীভাবে বা সাময়িকভাবে বন্ধ হয়ে গেছে কিনা (ভ্যালু true)। permanently_closed ব্যবহার করবেন না। পরিবর্তে, ব্যবসার অপারেশনাল স্ট্যাটাস পেতে business_status ব্যবহার করুন।
  • plus_code (ওপেন লোকেশন কোড এবং Plus Code দেখুন) হল একটি এনকোড করা লোকেশন রেফারেন্স, যা অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক থেকে প্রাপ্ত, যা একটি এলাকাকে উপস্থাপন করে: ১/৮০০০ ডিগ্রির ১/৮০০০ ডিগ্রি (নিরক্ষরেখায় প্রায় ১৪মি x ১৪মি) বা তার চেয়ে ছোট। যেসব জায়গায় রাস্তার ঠিকানা নেই (যেখানে বিল্ডিংয়ের নম্বর বা রাস্তার নাম নেই) সেখানে রাস্তার ঠিকানার পরিবর্তে Plus Code ব্যবহার করা যেতে পারে।

    Plus Code-এর ফর্ম্যাট গ্লোবাল কোড ও কম্পাউন্ড কোড হিসেবে করা হয়:

    • global_code হল ৪ অক্ষরের এলাকার কোড এবং ৬ অক্ষর বা তার বেশি দৈর্ঘ্যের স্থানীয় কোড (849VCWC8+R9)।
    • compound_code হল ৬টি অক্ষর বা তার বেশি দৈর্ঘ্যের স্থানীয় কোড যার সাথে নির্দিষ্ট লোকেশন উল্লেখ করা থাকে (CWC8+R9, Mountain View, CA, USA)। প্রোগ্রাম্যাটিক্যালি এই কন্টেন্ট পার্স করবেন না।
    সাধারণত, গ্লোবাল কোড এবং কম্পাউন্ড কোড, দুটিই রিটার্ন করা হয়। তবে, ফলাফল যদি কোনও প্রত্যন্ত লোকেশন (যেমন, মহাসাগর বা মরুভূমি) হয়, তাহলে শুধু গ্লোবাল কোড দেখানো হতে পারে।
  • html_attributions: অ্যাট্রিবিউশনের একটি অ্যারে যা সার্চ ফলাফল দেখানোর সময় আপনাকে দেখাতে হবে। অ্যারের প্রতিটি এন্ট্রিতে একটি অ্যাট্রিবিউশনের জন্য HTML টেক্সট থাকে। মনে রাখবেন: এটি হল সম্পূর্ণ সার্চ রেসপন্সের জন্য সমস্ত অ্যাট্রিবিউশনের একটি অ্যাগ্রিগেশন। তাই, উত্তরে থাকা সব PlaceResult অবজেক্টে একই অ্যাট্রিবিউশন তালিকা থাকে।
  • icon একটি রঙিন ৭১পিক্সেল x ৭১পিক্সেল PNG আইকনের জন্য URL প্রদান করে।
  • icon_mask_base_uri রঙ ছাড়া আইকনের জন্য বেস URL রিটার্ন করে, .svg বা .png এক্সটেনশন বাদ দিয়ে।
  • icon_background_color জায়গার বিভাগের জন্য ডিফল্ট HEX কালার কোড ফেরত দেয়।
  • name: জায়গার নাম।
  • opening_hours-এ নিম্নলিখিত তথ্য থাকতে পারে:
  • place_id হল একটি টেক্সট শনাক্তকারী যা অনন্যভাবে একটি স্থান শনাক্ত করে। জায়গাটি সম্পর্কে তথ্য পেতে, এই শনাক্তকারীটি জায়গার বিবরণ অনুরোধ-এ পাস করুন। প্লেস আইডির সাহায্যে কোনও জায়গার রেফারেন্স কীভাবে দেবেন সেই সম্পর্কে আরও জানুন।
  • rating-এ ব্যবহারকারীদের রিভিউয়ের ভিত্তিতে ০.০ থেকে ৫.০ পর্যন্ত জায়গার রেটিং থাকে।
  • types এই জায়গার ধরনের অ্যারে (যেমন, ["political", "locality"] বা ["restaurant", "lodging"])। এই অ্যারেতে একাধিক ভ্যালু থাকতে পারে অথবা এটি খালিও থাকতে পারে। আগে থেকে বিজ্ঞপ্তি না পাঠিয়েই নতুন ভ্যালু যোগ করা হতে পারে। কাজ করে এমন ধরনের তালিকা দেখুন।
  • vicinity: রাস্তার নাম, রাস্তার নম্বর ও এলাকা সহ জায়গার একটি সহজ ঠিকানা, তবে এতে প্রদেশ/রাজ্য, পোস্টাল কোড বা দেশের নাম থাকে না। যেমন, Google-এর সিডনি, অস্ট্রেলিয়া অফিসের vicinity ভ্যালু হল 5/48 Pirrama Road, Pyrmont।

অতিরিক্ত ফলাফল অ্যাক্সেস করুন

ডিফল্ট হিসেবে, প্রতিটি জায়গা সার্চ করার জন্য প্রতি কোয়েরিতে সর্বাধিক ২০টি ফলাফল দেখানো হয়। তবে, প্রতিটি সার্চে ৬০টি পর্যন্ত ফলাফল পাওয়া যেতে পারে, যা তিনটি পৃষ্ঠায় ভাগ করা থাকে। PlaceSearchPagination অবজেক্ট ব্যবহার করে অতিরিক্ত পৃষ্ঠা উপলভ্য। অতিরিক্ত পৃষ্ঠা অ্যাক্সেস করতে, আপনাকে অবশ্যই কলব্যাক ফাংশন ব্যবহার করে PlaceSearchPagination অবজেক্ট ক্যাপচার করতে হবে। PlaceSearchPagination অবজেক্টকে এইভাবে সংজ্ঞায়িত করা হয়:

  • hasNextPage একটি বুলিয়ান প্রপার্টি যা আরও ফলাফল উপলভ্য আছে কিনা তা নির্দেশ করে। true যখন অতিরিক্ত ফলাফল পৃষ্ঠা থাকে।
  • nextPage() এমন একটি ফাংশন যা পরবর্তী সেট ফলাফল দেখাবে। সার্চ করার পরে, ফলাফলের পরবর্তী পৃষ্ঠা উপলভ্য হওয়ার আগে আপনাকে দুই সেকেন্ড অপেক্ষা করতে হবে।

পরবর্তী ফলাফলের সেট দেখতে, nextPage কল করুন। ফলাফলের পরবর্তী পৃষ্ঠা দেখানোর আগে ফলাফলের প্রতিটি পৃষ্ঠা দেখাতে হবে। মনে রাখবেন যে প্রতিটি সার্চ আপনার ব্যবহারের সীমার বিপরীতে একটি একক অনুরোধ হিসাবে গণনা করা হয়।

নিচের উদাহরণে দেখানো হয়েছে যে কীভাবে আপনার কলব্যাক ফাংশন পরিবর্তন করে PlaceSearchPagination অবজেক্ট ক্যাপচার করবেন, যাতে আপনি একাধিক সার্চ অনুরোধ ইস্যু করতে পারেন।

TypeScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">

function initMap(): void {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      center: pyrmont,
      zoom: 17,
      mapId: "8d193001f940fde3",
    } as google.maps.MapOptions
  );

  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage: () => void | false;
  const moreButton = document.getElementById("more") as HTMLButtonElement;

  moreButton.onclick = function () {
    moreButton.disabled = true;

    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (
      results: google.maps.places.PlaceResult[] | null,
      status: google.maps.places.PlacesServiceStatus,
      pagination: google.maps.places.PlaceSearchPagination | null
    ) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;

      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    }
  );
}

function addPlaces(
  places: google.maps.places.PlaceResult[],
  map: google.maps.Map
) {
  const placesList = document.getElementById("places") as HTMLElement;

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon!,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name!,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name!;
      placesList.appendChild(li);

      li.addEventListener("click", () => {
        map.setCenter(place.geometry!.location!);
      });
    }
  }
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

জাভাস্ক্রিপ্ট

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
function initMap() {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(document.getElementById("map"), {
    center: pyrmont,
    zoom: 17,
    mapId: "8d193001f940fde3",
  });
  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage;
  const moreButton = document.getElementById("more");

  moreButton.onclick = function () {
    moreButton.disabled = true;
    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (results, status, pagination) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;
      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    },
  );
}

function addPlaces(places, map) {
  const placesList = document.getElementById("places");

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name;
      placesList.appendChild(li);
      li.addEventListener("click", () => {
        map.setCenter(place.geometry.location);
      });
    }
  }
}

window.initMap = initMap;
উদাহরণ দেখুন

জায়গার বিবরণ

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

জায়গার বিবরণ সংক্রান্ত অনুরোধ

পরিষেবার getDetails() পদ্ধতিতে কল করার মাধ্যমে জায়গার বিবরণ সংক্রান্ত অনুরোধ করা হয়।

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

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

এটি একটি কলব্যাক পদ্ধতিও গ্রহণ করে, যা google.maps.places.PlacesServiceStatus রেসপন্সে পাস করা স্ট্যাটাস কোড এবং google.maps.places.PlaceResult অবজেক্ট ম্যানেজ করে।

var request = {
  placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4',
  fields: ['name', 'rating', 'formatted_phone_number', 'geometry']
};

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

function callback(place, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    createMarker(place);
  }
}

উদাহরণ দেখুন

ফিল্ড (জায়গার বিবরণ)

fields প্যারামিটার স্ট্রিংয়ের (ফিল্ডের নাম) একটি অ্যারে নেয়।

ফেরত পাঠানোর জন্য জায়গার ডেটার ধরনের অ্যারে নির্দিষ্ট করতে fields প্যারামিটার ব্যবহার করুন। যেমন: fields: ['address_components', 'opening_hours', 'geometry']। কম্পাউন্ড ভ্যালু উল্লেখ করার সময় ডট ব্যবহার করুন। যেমন: opening_hours.weekday_text।

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

প্রাথমিক

বেসিক বিভাগে নিম্নলিখিত ফিল্ড অন্তর্ভুক্ত থাকে:
address_components, adr_address, business_status, formatted_address, geometry, icon, icon_mask_base_uri, icon_background_color,name, permanently_closed (বন্ধ করা হয়েছে), photo, place_id, plus_code, type, url, utc_offset (বন্ধ করা হয়েছে Places Library, Maps JavaScript API-তে), utc_offset_minutes, vicinity

পরিচিতি

'পরিচিতি' বিভাগে নিম্নলিখিত ফিল্ড অন্তর্ভুক্ত থাকে:
formatted_phone_number, international_phone_number, opening_hours, website

পরিবেশ

পরিবেশ বিভাগে নিম্নলিখিত ফিল্ড অন্তর্ভুক্ত থাকে: price_level, rating, reviews, user_ratings_total

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

জায়গার বিবরণ সংক্রান্ত উত্তর

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

PlacesServiceStatus রেসপন্স অবজেক্টে অনুরোধের স্ট্যাটাস থাকে এবং এতে ডিবাগিং তথ্য থাকতে পারে যা আপনাকে ট্র্যাক করতে সাহায্য করে কেন জায়গার বিবরণ সংক্রান্ত অনুরোধ ব্যর্থ হয়েছে। সম্ভাব্য স্ট্যাটাস ভ্যালু হল:

  • INVALID_REQUEST: এই অনুরোধটি সঠিক নয়।
  • OK: উত্তরে সঠিক ফলাফল আছে।
  • OVER_QUERY_LIMIT: ওয়েবপেজটি তার অনুরোধের কোটা ছাড়িয়ে গেছে।
  • NOT_FOUND উল্লেখ করা লোকেশনটি জায়গার ডেটাবেসে খুঁজে পাওয়া যায়নি।
  • REQUEST_DENIED: ওয়েবপেজকে PlacesService ব্যবহার করার অনুমতি দেওয়া হয়নি।
  • UNKNOWN_ERROR: সার্ভারে সমস্যার কারণে PlacesService অনুরোধ প্রসেস করা যায়নি। আপনি আবার চেষ্টা করলে অনুরোধটি সফল হতে পারে।
  • ZERO_RESULTS: এই অনুরোধের জন্য কোনও ফলাফল পাওয়া যায়নি।

জায়গার বিবরণ সংক্রান্ত ফলাফল

getDetails() কল সফল হলে, নিম্নলিখিত প্রপার্টি সহ PlaceResult অবজেক্ট রিটার্ন করে:

  • address_components: এই ঠিকানার ক্ষেত্রে প্রযোজ্য আলাদা আলাদা কম্পোনেন্ট সহ একটি অ্যারে।

    প্রতিটি ঠিকানার কম্পোনেন্টে সাধারণত নিম্নলিখিত ফিল্ড থাকে:

    • types[] হল একটি অ্যারে যা ঠিকানা কম্পোনেন্টের ধরন নির্দেশ করে। ঠিকানার উপাদানের জন্য কোনও পরিচিত ধরন না থাকলে, ঠিকানার উপাদানে একটি খালি ধরনের অ্যারে থাকতে পারে। প্রয়োজন অনুযায়ী API নতুন ধরনের ভ্যালু যোগ করতে পারে। আরও তথ্যের জন্য, ঠিকানার ধরন ও ঠিকানার কম্পোনেন্টের ধরন দেখুন।
    • long_name হল জিওকোডারের মাধ্যমে পাওয়া ঠিকানা কম্পোনেন্টের সম্পূর্ণ টেক্সট বিবরণ বা নাম।
    • short_name হল ঠিকানা কম্পোনেন্টের জন্য সংক্ষিপ্ত টেক্সট নাম, যদি উপলভ্য থাকে। যেমন, আলাস্কা রাজ্যের জন্য কোনও ঠিকানা উপাদানের long_name "আলাস্কা" এবং short_name "AK" হতে পারে, যেখানে ২-অক্ষরের পোস্টাল সংক্ষিপ্ত রূপ ব্যবহার করা হয়।

    address_components[] অ্যারে সম্পর্কে নিম্নলিখিত তথ্য মনে রাখবেন:

    • ঠিকানার উপাদানের অ্যারেতে formatted_address-এর চেয়ে বেশি উপাদান থাকতে পারে।
    • অ্যারেতে ঠিকানা সহ সব রাজনৈতিক এন্টিটি অন্তর্ভুক্ত নাও থাকতে পারে, formatted_address-এ অন্তর্ভুক্ত এন্টিটিগুলি ছাড়া। নির্দিষ্ট ঠিকানা আছে এমন সব রাজনৈতিক এন্টিটি খুঁজে পেতে, আপনাকে রিভার্স জিওকোডিং ব্যবহার করতে হবে, অনুরোধে প্যারামিটার হিসেবে ঠিকানার অক্ষাংশ/দ্রাঘিমাংশ পাস করতে হবে।
    • অনুরোধের মধ্যে উত্তরের ফর্ম্যাট একই থাকবে কিনা তার কোনও গ্যারান্টি নেই। বিশেষ করে, address_components-এর সংখ্যা অনুরোধ করা ঠিকানার উপর নির্ভর করে এবং একই ঠিকানার জন্য সময়ের সাথে সাথে পরিবর্তিত হতে পারে। অ্যারেতে কোনও কম্পোনেন্ট তার পজিশন পরিবর্তন করতে পারে। কম্পোনেন্টের ধরন পরিবর্তন হতে পারে। পরবর্তী উত্তরে কোনও নির্দিষ্ট কম্পোনেন্ট নাও থাকতে পারে।
  • business_status জায়গাটি কোনও ব্যবসা হলে, সেটির অপারেশনাল স্ট্যাটাস দেখায়। এতে নিম্নলিখিত ভ্যালুর মধ্যে একটি থাকতে পারে:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    কোনও ডেটা না থাকলে, business_status রিটার্ন করা হয় না।
  • formatted_address: এই জায়গার মানুষের-পঠনযোগ্য ঠিকানা।

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

    ফর্ম্যাট করা ঠিকানা এক বা একাধিক ঠিকানার কম্পোনেন্ট নিয়ে গঠিত। যেমন, "111 8th Avenue, New York, NY" ঠিকানায় নিম্নলিখিত উপাদানগুলি রয়েছে: "111" (রাস্তার নম্বর), "8th Avenue" (রুট), "New York" (শহর) এবং "NY" (মার্কিন যুক্তরাষ্ট্রের রাজ্য)।

    প্রোগ্রাম্যাটিক্যালি ফর্ম্যাট করা ঠিকানা পার্স করবেন না। পরিবর্তে, আপনাকে ঠিকানার আলাদা আলাদা অংশ ব্যবহার করতে হবে, যা API রেসপন্সে ফর্ম্যাট করা ঠিকানা ফিল্ডের পাশাপাশি অন্তর্ভুক্ত থাকে।

  • formatted_phone_number: জায়গার ফোন নম্বর, নম্বরের আঞ্চলিক কনভেনশন অনুযায়ী ফর্ম্যাট করা।
  • geometry: জায়গার জ্যামিতি-সম্পর্কিত তথ্য। এর মধ্যে রয়েছে:
    • location সেই জায়গার অক্ষাংশ ও দ্রাঘিমাংশ প্রদান করে।
    • viewport এই জায়গাটি দেখার সময় ম্যাপে পছন্দের ভিউপোর্ট নির্ধারণ করে।
  • permanently_closed (বন্ধ করা হয়েছে) হল একটি বুলিয়ান ফ্ল্যাগ যা নির্দেশ করে যে জায়গাটি স্থায়ীভাবে বা সাময়িকভাবে বন্ধ হয়ে গেছে কিনা (ভ্যালু true)। permanently_closed ব্যবহার করবেন না। পরিবর্তে, ব্যবসার অপারেশনাল স্ট্যাটাস পেতে business_status ব্যবহার করুন।
  • plus_code (ওপেন লোকেশন কোড এবং Plus Code দেখুন) হল একটি এনকোড করা লোকেশন রেফারেন্স, যা অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক থেকে প্রাপ্ত, যা একটি এলাকাকে উপস্থাপন করে: ১/৮০০০ ডিগ্রির ১/৮০০০ ডিগ্রি (নিরক্ষরেখায় প্রায় ১৪মি x ১৪মি) বা তার চেয়ে ছোট। যেসব জায়গায় রাস্তার ঠিকানা নেই (যেখানে বিল্ডিংয়ের নম্বর বা রাস্তার নাম নেই) সেখানে রাস্তার ঠিকানার পরিবর্তে Plus Code ব্যবহার করা যেতে পারে।

    Plus Code-এর ফর্ম্যাট গ্লোবাল কোড ও কম্পাউন্ড কোড হিসেবে করা হয়:

    • global_code হল ৪ অক্ষরের এলাকার কোড এবং ৬ অক্ষর বা তার বেশি দৈর্ঘ্যের স্থানীয় কোড (849VCWC8+R9)।
    • compound_code হল ৬টি অক্ষর বা তার বেশি দৈর্ঘ্যের স্থানীয় কোড যার সাথে নির্দিষ্ট লোকেশন উল্লেখ করা থাকে (CWC8+R9, Mountain View, CA, USA)। প্রোগ্রাম্যাটিক্যালি এই কন্টেন্ট পার্স করবেন না।
    সাধারণত, গ্লোবাল কোড এবং কম্পাউন্ড কোড, দুটিই রিটার্ন করা হয়। তবে, ফলাফল যদি কোনও প্রত্যন্ত লোকেশন (যেমন, মহাসাগর বা মরুভূমি) হয়, তাহলে শুধু গ্লোবাল কোড দেখানো হতে পারে।
  • html_attributions: এই জায়গার ফলাফলের জন্য অ্যাট্রিবিউশন টেক্সট দেখানো হবে।
  • icon: ছবির রিসোর্সের URL যা এই জায়গার ধরন দেখাতে ব্যবহার করা যেতে পারে।
  • international_phone_number-এ আইএসডি কোড সহ জায়গার ফোন নম্বর থাকে। আন্তর্জাতিক ফর্ম্যাটে দেশের কোড অন্তর্ভুক্ত থাকে এবং এর আগে প্লাস (+) চিহ্ন থাকে। যেমন, Google-এর সিডনি, অস্ট্রেলিয়া অফিসের international_phone_number হল +61 2 9374 4000।
  • name: জায়গার নাম।
  • utc_offset বন্ধ করা হয়েছে Places Library, Maps JavaScript API-তে, পরিবর্তে utc_offset_minutes ব্যবহার করুন।
  • utc_offset_minutes-এ এই জায়গার বর্তমান টাইমজোন UTC থেকে কত মিনিট অফসেট তা উল্লেখ করা থাকে। যেমন, ডেলাইট সেভিং টাইম চলাকালীন সিডনি, অস্ট্রেলিয়ার কোনও জায়গার জন্য এটি হবে ৬৬০ (UTC থেকে +১১ ঘণ্টা) এবং ডেলাইট সেভিং টাইম ছাড়া ক্যালিফোর্নিয়ার কোনও জায়গার জন্য এটি হবে -৪৮০ (UTC থেকে -৮ ঘণ্টা)।
  • opening_hours-এ নিম্নলিখিত তথ্য রয়েছে:
    • open_now (বন্ধ করা হয়েছে Places Library, Maps JavaScript API-তে; এর পরিবর্তে opening_hours.isOpen() ব্যবহার করুন। জায়গার বিবরণের সাথে isOpen কীভাবে ব্যবহার করবেন তা জানতে, Places API (Legacy) ভিডিওতে কীভাবে খোলা থাকার সময় পাবেন দেখুন।) `open_now` হল একটি বুলিয়ান ভ্যালু যা নির্দেশ করে যে জায়গাটি বর্তমান সময়ে খোলা আছে কিনা।
    • periods[] হল রবিবার থেকে শুরু করে কালানুক্রমিক ক্রমে সাত দিন কভার করে এমন খোলার সময়সীমার একটি অ্যারে। প্রতিটি সময়সীমার মধ্যে রয়েছে:
      • open-এ দিন ও সময়ের অবজেক্টের একটি পেয়ার আছে যা জায়গাটি কখন খোলে তা বর্ণনা করে:
        • day ০–৬-এর মধ্যে একটি সংখ্যা, যা সপ্তাহের দিনের সাথে সম্পর্কিত, রবিবার থেকে শুরু। যেমন, ২ মানে মঙ্গলবার।
        • time-এ ২৪-ঘণ্টার hhmm ফর্ম্যাটে দিনের সময় থাকতে পারে (মান 0000–2359 রেঞ্জের মধ্যে থাকে)। জায়গাটির টাইমজোনে time রিপোর্ট করা হবে।
      • close-এ দিন ও সময়ের অবজেক্টের একটি পেয়ার থাকতে পারে যা জায়গাটি কখন বন্ধ হয় তা বর্ণনা করে। মনে রাখবেন: কোনও জায়গা সবসময় খোলা থাকলে, উত্তরে close বিভাগ থাকবে না। অ্যাপ্লিকেশন সবসময় খোলা থাকার উপর নির্ভর করতে পারে যেটি open সময়সীমা হিসেবে দেখানো হয়, যার মধ্যে day-এর ভ্যালু 0 এবং time-এর ভ্যালু 0000, এবং কোনও close নেই।
    • weekday_text হল সাতটি স্ট্রিংয়ের একটি অ্যারে যা সপ্তাহের প্রতিটি দিনের জন্য ফর্ম্যাট করা খোলা থাকার সময়কে দেখায়। জায়গার বিবরণ অনুরোধে language প্যারামিটার উল্লেখ করা থাকলে, Places Service সেই ভাষার জন্য উপযুক্তভাবে খোলা থাকার সময় ফর্ম্যাট ও লোকালাইজ করবে। এই অ্যারেতে এলিমেন্টের ক্রম language প্যারামিটারের উপর নির্ভর করে। কিছু ভাষায় সপ্তাহ সোমবার থেকে শুরু হয়, আবার কিছু ভাষায় রবিবার থেকে শুরু হয়।
  • permanently_closed (বন্ধ করা হয়েছে) হল একটি বুলিয়ান ফ্ল্যাগ যা নির্দেশ করে যে জায়গাটি স্থায়ীভাবে বা সাময়িকভাবে বন্ধ হয়ে গেছে কিনা (ভ্যালু true)। permanently_closed ব্যবহার করবেন না। পরিবর্তে, ব্যবসার অপারেশনাল স্ট্যাটাস পেতে business_status ব্যবহার করুন।
  • photos[]: PlacePhoto অবজেক্টের অ্যারে। getUrl() পদ্ধতি ব্যবহার করে ফটো পেতে PlacePhoto ব্যবহার করা যেতে পারে অথবা আপনি নিম্নলিখিত মানের জন্য অবজেক্টটি পরীক্ষা করতে পারেন:
    • height: পিক্সেল হিসেবে ছবির সর্বাধিক উচ্চতা।
    • width: পিক্সেল হিসেবে ছবির সর্বাধিক প্রস্থ।
    • html_attributions: এই জায়গার ফটোর সাথে অ্যাট্রিবিউশন টেক্সট দেখানো হবে।
  • place_id: টেক্সট শনাক্তকারী যা অনন্যভাবে কোনও জায়গা শনাক্ত করে এবং জায়গার বিবরণ অনুরোধ ব্যবহার করে জায়গা সম্পর্কে তথ্য পেতে ব্যবহার করা যেতে পারে। প্লেস আইডির সাহায্যে কোনও জায়গার রেফারেন্স কীভাবে দেবেন সেই সম্পর্কে আরও জানুন।
  • rating: ব্যবহারকারীদের দেওয়া রিভিউয়ের ভিত্তিতে, জায়গার রেটিং, ০.০ থেকে ৫.০ পর্যন্ত।
  • reviews সর্বাধিক পাঁচটি রিভিউয়ের অ্যারে। প্রতিটি রিভিউতে একাধিক কম্পোনেন্ট থাকে:
    • aspects[]-এ PlaceAspectRating অবজেক্টের একটি অ্যারে আছে, যার প্রতিটি প্রতিষ্ঠানের একটি অ্যাট্রিবিউটের রেটিং প্রদান করে। অ্যারের প্রথম অবজেক্টকে প্রাথমিক দিক হিসেবে বিবেচনা করা হয়। প্রতিটি PlaceAspectRating-কে এইভাবে সংজ্ঞায়িত করা হয়:
      • type যে বিষয়ের রেটিং করা হচ্ছে তার নাম। নিম্নলিখিত ধরনের ফাইল কাজ করে: appeal, atmosphere, decor, facilities, food, overall, quality এবং service।
      • rating এই নির্দিষ্ট বিষয়ের জন্য ব্যবহারকারীর রেটিং, ০ থেকে ৩ পর্যন্ত।
    • author_name যে ব্যবহারকারী রিভিউ জমা দিয়েছেন তার নাম। নাম প্রকাশ না করা রিভিউ "একজন Google ব্যবহারকারী" হিসেবে অ্যাট্রিবিউট করা হয়। যদি কোনও ভাষা প্যারামিটার সেট করা থাকে, তাহলে "একজন Google ব্যবহারকারী" বাক্যাংশটি একটি লোকালাইজড স্ট্রিং রিটার্ন করবে।
    • author_url ব্যবহারকারীর Google+ প্রোফাইলের URL, যদি উপলভ্য থাকে।
    • language একটি IETF ভাষা কোড যা ব্যবহারকারীর রিভিউতে ব্যবহৃত ভাষা নির্দেশ করে। এই ফিল্ডে শুধুমাত্র মূল ভাষার ট্যাগ থাকে, দেশ বা অঞ্চল নির্দেশকারী সেকেন্ডারি ট্যাগ থাকে না। যেমন, সব ইংরেজি রিভিউ 'en' হিসেবে ট্যাগ করা হয়, 'en-AU' বা 'en-UK' হিসেবে নয়।
    • rating এই জায়গার জন্য ব্যবহারকারীর সামগ্রিক রেটিং। এটি হল ১ থেকে ৫-এর মধ্যে থাকা একটি পূর্ণ সংখ্যা।
    • ব্যবহারকারীর রিভিউ text করুন। Google Places-এর মাধ্যমে কোনও লোকেশন পর্যালোচনা করার সময়, টেক্সট রিভিউকে ঐচ্ছিক হিসেবে বিবেচনা করা হয়; তাই, এই ফিল্ড খালি থাকতে পারে।
  • types এই জায়গার ধরনের অ্যারে (যেমন, ["political", "locality"] বা ["restaurant", "lodging"])। এই অ্যারেতে একাধিক ভ্যালু থাকতে পারে অথবা এটি খালিও থাকতে পারে। আগে থেকে বিজ্ঞপ্তি না পাঠিয়েই নতুন ভ্যালু যোগ করা হতে পারে। কাজ করে এমন ধরনের তালিকা দেখুন।
  • url: এই জায়গার জন্য অফিসিয়াল Google পৃষ্ঠার URL। এটি Google-এর মালিকানাধীন পৃষ্ঠা যেখানে জায়গাটি সম্পর্কে সেরা উপলভ্য তথ্য রয়েছে। অ্যাপ্লিকেশনকে অবশ্যই এই পৃষ্ঠার সাথে লিঙ্ক করতে হবে বা ব্যবহারকারীকে জায়গা সম্পর্কে বিস্তারিত ফলাফল দেখায় এমন যেকোনও স্ক্রিনে এটি এম্বেড করতে হবে।
  • vicinity: রাস্তার নাম, রাস্তার নম্বর ও এলাকা সহ জায়গার একটি সহজ ঠিকানা, তবে এতে প্রদেশ/রাজ্য, পোস্টাল কোড বা দেশের নাম থাকে না। যেমন, Google-এর সিডনি, অস্ট্রেলিয়া অফিসের vicinity ভ্যালু হল 5/48 Pirrama Road, Pyrmont। vicinity প্রপার্টি শুধুমাত্র নিয়ারবাই সার্চ-এর জন্যই ফেরত দেওয়া হয়।
  • website এই জায়গার জন্য প্রামাণ্য ওয়েবসাইট তালিকাভুক্ত করে, যেমন ব্যবসার হোমপেজ।

মনে রাখবেন: সব লোকেশনের জন্য মাল্টিডাইমেনশনাল রেটিং উপলভ্য নাও থাকতে পারে। খুব কম রিভিউ থাকলে, বিস্তারিত উত্তরে হয় ০.০ থেকে ৫.০ স্কেলে একটি লিগেসি রেটিং (উপলভ্য থাকলে) অন্তর্ভুক্ত থাকবে অথবা কোনও রেটিং থাকবে না।

Place ID-এর মাধ্যমে কোনও জায়গার রেফারেন্স দেওয়া

প্লেস আইডি হল Google Map-এ কোনও জায়গার অনন্য রেফারেন্স। ব্যবসা, ল্যান্ডমার্ক, পার্ক ও ইন্টারসেকশন সহ বেশিরভাগ লোকেশনের জন্য প্লেস আইডি উপলভ্য।

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

Google Maps Platform পরিষেবার শর্তাবলীর অনুচ্ছেদ ৩.২.৩(খ)-তে উল্লেখ করা ক্যাশিং সংক্রান্ত বিধিনিষেধ থেকে প্লেস আইডি ছাড় পায়। তাই, আপনি পরে ব্যবহার করার জন্য জায়গার আইডি ভ্যালু স্টোর করতে পারেন। প্লেস আইডি সেভ করার সময় পেশাদার পদ্ধতি সম্পর্কে জানতে, প্লেস আইডি ওভারভিউ দেখুন।

var map;

function initialize() {
  // Create a map centered in Pyrmont, Sydney (Australia).
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -33.8666, lng: 151.1958},
    zoom: 15
  });

  // Search for Google's office in Australia.
  var request = {
    location: map.getCenter(),
    radius: '500',
    query: 'Google Sydney'
  };

  var service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

// Checks that the PlacesServiceStatus is OK, and adds a marker
// using the place ID and location from the PlacesService.
function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    var marker = new google.maps.Marker({
      map: map,
      place: {
        placeId: results[0].place_id,
        location: results[0].geometry.location
      }
    });
  }
}

google.maps.event.addDomListener(window, 'load', initialize);

জায়গার ফটো

আপনার সাইটে খুব ভালো কোয়ালিটির ফটোগ্রাফিক কন্টেন্ট যোগ করতে 'জায়গার ফটো' ফিচার ব্যবহার করুন। ফটো পরিষেবা আপনাকে Places এবং Google+ স্থানীয় ডেটাবেসে সংরক্ষিত লক্ষ লক্ষ ফটোতে অ্যাক্সেস দেয়। আপনি যখন কোনও জায়গার বিবরণ সংক্রান্ত অনুরোধ ব্যবহার করে জায়গার তথ্য পান, তখন প্রাসঙ্গিক ফটোগ্রাফিক কন্টেন্টের জন্য ফটো রেফারেন্স ফেরত দেওয়া হবে। এছাড়াও, প্রাসঙ্গিক হলে, নিয়ারবাই Search এবং টেক্সট সার্চের অনুরোধের ক্ষেত্রে প্রতিটি জায়গার জন্য একটি করে ফটো রেফারেন্স দেখানো হয়। এরপর, Photo পরিষেবা ব্যবহার করে আপনি রেফারেন্স করা ফটো অ্যাক্সেস করতে এবং আপনার অ্যাপ্লিকেশনের জন্য উপযুক্ত সাইজে ছবি ছোট বড় করতে পারবেন।

PlacesService-এর জন্য করা যেকোনও getDetails(), textSearch() বা nearbySearch() অনুরোধের ক্ষেত্রে PlaceResult অবজেক্টের অংশ হিসেবে PlacePhoto অবজেক্টের একটি অ্যারে ফেরত দেওয়া হবে।

মনে রাখবেন: অনুরোধের উপর নির্ভর করে কতগুলি ফটো দেখানো হবে তা পরিবর্তিত হয়।

  • নিয়ারবাই Search বা টেক্সট সার্চ সর্বাধিক একটি PlacePhoto অবজেক্ট দেখাবে।
  • বিবরণ সংক্রান্ত অনুরোধের উত্তরে সর্বাধিক দশটি PlacePhoto অবজেক্ট পাওয়া যাবে।

আপনি PlacePhoto.getUrl() পদ্ধতি কল করে এবং একটি সঠিক PhotoOptions অবজেক্ট পাস করে সংশ্লিষ্ট ছবির URL-এর জন্য অনুরোধ করতে পারেন। ছবির সর্বাধিক উচ্চতা ও প্রস্থ নির্দিষ্ট করতে PhotoOptions অবজেক্ট ব্যবহার করুন। আপনি maxHeight এবং maxWidth, দুটির জন্যই কোনও ভ্যালু উল্লেখ করলে, ফটো পরিষেবা, আসল অ্যাস্পেক্ট রেশিও বজায় রেখে, দুটি সাইজের মধ্যে যেটি ছোট, সেই সাইজে ছবিটিকে ছোট বড় করবে।

নিম্নলিখিত কোড স্নিপেট একটি জায়গার অবজেক্ট গ্রহণ করে এবং ফটো থাকলে ম্যাপে একটি মার্কার যোগ করে। ডিফল্ট মার্কার ছবি, ফটোর ছোট ভার্সন দিয়ে পরিবর্তন করা হয়েছে।

function createPhotoMarker(place) {
  var photos = place.photos;
  if (!photos) {
    return;
  }

  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location,
    title: place.name,
    icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35})
  });
}

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