এক নজরে
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 বা SDK-তে সীমাবদ্ধ হয়ে যায়। API 'কী'-এর সাথে যুক্ত API বা SDK-তে করা অনুরোধ প্রসেস করা হবে। API 'কী'-এর সাথে যুক্ত নয় এমন API বা SDK-তে করা অনুরোধ কাজ করবে না। Places Library, Maps JavaScript API-এর সাথে ব্যবহারের জন্য API 'কী' সীমাবদ্ধ করতে:- Google Cloud Console-এ যান।
- প্রোজেক্ট ড্রপ-ডাউনে ক্লিক করুন এবং সেই প্রোজেক্টটি বেছে নিন যাতে আপনি সুরক্ষিত করতে চান এমন API কী আছে।
- মেনু বোতামে ক্লিক করুন
এবং Google Maps Platform > ক্রেডেনশিয়াল বিকল্প বেছে নিন।
- ক্রেডেনশিয়াল পৃষ্ঠায়, আপনি যে API কী সুরক্ষিত করতে চান সেটির নামে ক্লিক করুন।
- API কী সীমাবদ্ধ ও রিনেম করুন পৃষ্ঠায়, বিধিনিষেধ সেট করুন:
- API সংক্রান্ত বিধিনিষেধ
- কী সীমাবদ্ধ করুন বিকল্প বেছে নিন।
- API বেছে নিন বিকল্পে ক্লিক করুন এবং Maps JavaScript API ও Places API (Legacy), এই দুটিই বেছে নিন।
(কোনও API তালিকাভুক্ত না থাকলে, আপনাকে সেটি চালু করতে হবে।)
- সেভ করুন বিকল্পে ক্লিক করুন।
ব্যবহারের সীমা ও নীতি
কোটা
Places Library, Places API-এর সাথে ব্যবহারের কোটা শেয়ার করে। Places API-এর ব্যবহারের সীমা সংক্রান্ত ডকুমেন্টেশনে এই বিষয়ে বর্ণনা করা আছে।
নীতি
Places Library, Maps JavaScript API-এর ব্যবহার অবশ্যই Places API-এর জন্য বর্ণিত নীতি অনুযায়ী হতে হবে।
জায়গা সার্চ করা
Places পরিষেবার সাহায্যে আপনি নিম্নলিখিত ধরনের সার্চ করতে পারবেন:
- কোয়েরি থেকে জায়গা খোঁজা টেক্সট কোয়েরির (যেমন, কোনও জায়গার নাম বা ঠিকানা ) উপর ভিত্তি করে জায়গা রিটার্ন করে।
- ফোন নম্বর থেকে জায়গা খোঁজো ফোন নম্বরের ভিত্তিতে জায়গা রিটার্ন করে।
- আশপাশের সার্চ (লেগ্যাসি) ব্যবহারকারীর লোকেশনের উপর ভিত্তি করে আশপাশের জায়গার একটি তালিকা রিটার্ন করে।
- টেক্সট সার্চ (Legacy) সার্চ স্ট্রিংয়ের উপর ভিত্তি করে আশপাশের জায়গার একটি তালিকা রিটার্ন করে, যেমন "Pizza"
- জায়গার বিবরণ (লিগ্যাসি) সংক্রান্ত অনুরোধ কোনও নির্দিষ্ট জায়গা সম্পর্কে আরও বিস্তারিত তথ্য দেয়, যার মধ্যে ব্যবহারকারীর রিভিউ অন্তর্ভুক্ত।
ফিরে আসা তথ্যের মধ্যে এস্ট্যাবলিশমেন্ট — যেমন রেস্তোরাঁ, দোকান ও অফিস — এবং 'জিওকোড' ফলাফল অন্তর্ভুক্ত থাকতে পারে, যা ঠিকানা, শহর ও নগরের মতো রাজনৈতিক এলাকা এবং অন্যান্য আগ্রহের বিষয় নির্দেশ করে।
'জায়গা খোঁজো' (লিগ্যাসি) অনুরোধ
Find Place অনুরোধ আপনাকে টেক্সট কোয়েরি বা ফোন নম্বর দিয়ে কোনও জায়গা সার্চ করতে দেয়। দু'ধরনের Find Place অনুরোধ আছে:
কোয়েরি থেকে জায়গা খুঁজে পাওয়া
Find Place from Query টেক্সট ইনপুট নেয় এবং একটি জায়গা রিটার্ন করে। ইনপুট হিসেবে
যেকোনও ধরনের প্লেস ডেটা দেওয়া যেতে পারে, যেমন ব্যবসার নাম বা ঠিকানা। কোয়েরি থেকে
কোনও জায়গা খোঁজার অনুরোধ করতে, PlacesService-এর
findPlaceFromQuery()
মেথড কল করুন, যা নিম্নলিখিত প্যারামিটার নেয়:
query(প্রয়োজনীয়) যে টেক্সট স্ট্রিংয়ের উপর সার্চ করতে হবে, যেমন উদাহরণ: "রেস্তোরাঁ" বা "১২৩ মেইন স্ট্রিট"। এটি অবশ্যই কোনও জায়গার নাম, ঠিকানা বা প্রতিষ্ঠানের বিভাগ হতে হবে। অন্যান্য ধরনের ইনপুট দিলে সমস্যা হতে পারে এবং সঠিক ফলাফল পাওয়া যাবে কিনা সেই ব্যাপারে কোনও গ্যারান্টি দেওয়া হয় না। Places API এই স্ট্রিংয়ের উপর ভিত্তি করে সম্ভাব্য ম্যাচ রিটার্ন করবে এবং ফলাফলগুলিকে তাদের অনুভূত প্রাসঙ্গিকতার ভিত্তিতে সাজাবে।fields(প্রয়োজনীয়) রিটার্ন করার জন্য প্লেস ডেটার ধরন নির্দিষ্ট করে এমন এক বা একাধিক ফিল্ড ।locationBias(ঐচ্ছিক) সার্চ করার জন্য এলাকা নির্ধারণকারী কোঅর্ডিনেট। এটি নিম্নলিখিতগুলির মধ্যে যেকোনও একটি হতে পারে:- lat/lng কোঅর্ডিনেটের একটি সেট যা LatLngLiteral বা LatLng অবজেক্ট হিসেবে নির্দিষ্ট করা হয়
- আয়তাকার বাউন্ড (দুটি অক্ষাংশ/দ্রাঘিমাংশ জোড়া বা LatLngBounds অবজেক্ট)
- অক্ষাংশ/দ্রাঘিমাংশের কেন্দ্রে ব্যাসার্ধ (মিটারে)
এছাড়াও, আপনাকে অবশ্যই findPlaceFromQuery()-এ কলব্যাক পদ্ধতি পাস করতে হবে,
ফলাফল অবজেক্ট এবং google.maps.places.PlacesServiceStatus
উত্তর ম্যানেজ করার জন্য।
নিচের উদাহরণে findPlaceFromQuery()-এ কল করা হয়েছে,
"মিউজিয়াম অফ কনটেম্পোরারি আর্ট অস্ট্রেলিয়া" সার্চ করা হয়েছে এবং
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(ঐচ্ছিক) সার্চ করার জন্য এলাকাকে সংজ্ঞায়িত করা স্থানাঙ্ক। এটি নিম্নলিখিতগুলির মধ্যে যেকোনও একটি হতে পারে:- lat/lng কোঅর্ডিনেটের একটি সেট যা এইভাবে নির্দিষ্ট করা আছে LatLngLiteral বা LatLng অবজেক্ট
- আয়তাকার বাউন্ড (চারটি অক্ষাংশ/দ্রাঘিমাংশ পয়েন্ট বা একটি LatLngBounds অবজেক্ট)
- অক্ষাংশ/দ্রাঘিমাংশের কেন্দ্রে ব্যাসার্ধ (মিটারে)
এছাড়াও, আপনাকে অবশ্যই findPlaceFromPhoneNumber()-এ কলব্যাক পদ্ধতি পাস করতে হবে,
ফলাফল অবজেক্ট এবং google.maps.places.PlacesServiceStatus
উত্তর ম্যানেজ করার জন্য।
ফিল্ড (Find Place পদ্ধতি)
ফেরত পাঠানোর জন্য প্লেস ডেটা ধরনের একটি অ্যারে নির্দিষ্ট করতে fields প্যারামিটার ব্যবহার করুন।
যেমন: fields: ['formatted_address', 'opening_hours', 'geometry'].
যৌগিক ভ্যালু নির্দিষ্ট করার সময় একটি ডট ব্যবহার করুন। যেমন: opening_hours.weekday_text.
ফিল্ডগুলি জায়গা সার্চের ফলাফলের সাথে সম্পর্কিত এবং এগুলিকে
তিনটি বিলিং বিভাগে ভাগ করা হয়েছে: প্রাথমিক, পরিচিতি ও অ্যাটমস্ফিয়ার। প্রাথমিক ফিল্ডের জন্য
বেস রেট অনুযায়ী বিল করা হয় এবং এর জন্য কোনও অতিরিক্ত চার্জ লাগে না। Contact ও Atmosphere
ফিল্ডের জন্য বেশি চার্জ করা হয়। আরও তথ্যের জন্য প্রাইসিং শিট
দেখুন। ফিল্ডের জন্য অনুরোধ করা হোক বা না হোক, প্রতিটি কলের সাথে অ্যাট্রিবিউশন (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() পদ্ধতিগুলি একই সেট ফিল্ড
নেয় এবং তাদের নিজ নিজ উত্তরে একই ফিল্ড রিটার্ন করতে পারে।
লোকেশন বায়াস সেট করা (Find Place পদ্ধতি)
কোনও নির্দিষ্ট এলাকার ফলাফলকে Find Place-এর পছন্দসই করে তুলতে locationBias প্যারামিটার ব্যবহার করুন।
আপনি 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()
পদ্ধতিটি search() পদ্ধতিকে প্রতিস্থাপন করেছে।
service = new google.maps.places.PlacesService(map); service.nearbySearch(request, callback);
এই পদ্ধতিতে নিম্নলিখিত ফিল্ড সহ একটি অনুরোধ করা হয়:
- এগুলির মধ্যে কোনও একটি:
bounds, যা অবশ্যই একটিgoogle.maps.LatLngBoundsঅবজেক্ট হতে হবে যা আয়তাকার সার্চ এরিয়াকে সংজ্ঞায়িত করে। বাউন্ড এলাকার জন্য সর্বাধিক কাজ করে এমন কর্ণদৈর্ঘ্যের দূরত্ব হল আনুমানিক ১০০,০০০ মিটার।locationওradius; প্রথমটি একটিgoogle.maps.LatLngঅবজেক্ট নেয় এবং দ্বিতীয়টি একটি সাধারণ পূর্ণসংখ্যা নেয়, যা মিটারে বৃত্তের ব্যাসার্ধকে বোঝায়। অনুমোদিত সর্বাধিক ব্যাসার্ধ হল ৫০,০০০ মিটার। মনে রাখবেন, যখনrankByDISTANCE হিসেবে সেট করা হয়, তখন আপনাকে অবশ্যই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— ফলাফলকে শুধুমাত্র সেইসব জায়গার মধ্যে সীমাবদ্ধ করে যেখানে নির্দিষ্ট প্রাইস লেভেল আছে। বৈধ মানগুলি হল 0 (সবচেয়ে সাশ্রয়ী) থেকে 4 (সবচেয়ে দামি), এই দুটি মান সহ।- এগুলির মধ্যে কোনও একটি:
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কোনও জায়গা ব্যবসা হলে, সেটি চালু আছে কিনা তা বোঝায়। এতে নিম্নলিখিত মানগুলির মধ্যে একটি থাকতে পারে:OPERATIONALCLOSED_TEMPORARILYCLOSED_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একটি রঙিন ৭১px x ৭১px PNG আইকনের URL রিটার্ন করে।icon_mask_base_uriরঙ করা নয় এমন আইকনের বেস URL ফেরায়, তবে .svg বা .png এক্সটেনশন বাদ দিয়ে।icon_background_colorজায়গার ক্যাটেগরির জন্য ডিফল্ট হেক্স কালার কোড রিটার্ন করে।name: জায়গার নাম।opening_hours-এ নিম্নলিখিত তথ্য থাকতে পারে:open_nowহল একটি বুলিয়ান ভ্যালু যা থেকে বোঝা যায় যে জায়গাটি বর্তমান সময়ে খোলা আছে কিনা (সচল নয় Places Library, Maps JavaScript API-তে, এর পরিবর্তেutc_offset_minutesব্যবহার করুন)।
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উল্লেখ করা লোকেশনটি Places ডেটাবেসে খুঁজে পাওয়া যায়নি।REQUEST_DENIED: ওয়েবপেজকে PlacesService ব্যবহার করার অনুমতি দেওয়া হয়নি।UNKNOWN_ERROR: সার্ভারে সমস্যার কারণে PlacesService অনুরোধ প্রসেস করা যায়নি। আপনি আবার চেষ্টা করলে অনুরোধটি সফল হতে পারে।ZERO_RESULTS: এই অনুরোধের জন্য কোনও ফলাফল পাওয়া যায়নি।
জায়গার বিবরণ সংক্রান্ত ফলাফল
সফল getDetails() কল থেকে নিম্নলিখিত প্রপার্টি সহ একটি
PlaceResult অবজেক্ট রিটার্ন করা হয়:
address_components: এই ঠিকানার জন্য প্রযোজ্য আলাদা আলাদা কম্পোনেন্ট সহ একটি অ্যারে।প্রতিটি অ্যাড্রেস কম্পোনেন্টে সাধারণত নিম্নলিখিত ফিল্ড থাকে:
types[]হল একটি অ্যারে যা অ্যাড্রেস কম্পোনেন্টের ধরন নির্দেশ করে। ঠিকানার কম্পোনেন্টের জন্য কোনও পরিচিত ধরন না থাকলে, ঠিকানা কম্পোনেন্টে খালি types array থাকতে পারে। API প্রয়োজনে নতুন ধরনের ভ্যালু যোগ করতে পারে। আরও তথ্যের জন্য, ঠিকানার ধরন ও ঠিকানার কম্পোনেন্টের ধরন দেখুন।long_nameহল Geocoder-এর দেওয়া ঠিকানা কম্পোনেন্টের সম্পূর্ণ টেক্সট বিবরণ বা নাম।short_nameহল উপলভ্য থাকলে, ঠিকানার কম্পোনেন্টের সংক্ষিপ্ত টেক্সচুয়াল নাম। যেমন, আলাস্কা রাজ্যের ঠিকানার কম্পোনেন্টে ২-অক্ষরের পোস্টাল সংক্ষিপ্ত রূপ ব্যবহার করেlong_nameহিসেবে "আলাস্কা" এবংshort_nameহিসেবে "AK" থাকতে পারে।
address_components[]অ্যারে সম্পর্কে নিম্নলিখিত তথ্য মনে রাখবেন:- ঠিকানার কম্পোনেন্ট অ্যারেতে
formatted_address-এর থেকে বেশি কম্পোনেন্ট থাকতে পারে। - অ্যারেতে এমন সব রাজনৈতিক সত্তা অন্তর্ভুক্ত নাও থাকতে পারে যেগুলির
ঠিকানা আছে, এগুলি ছাড়াও
formatted_address-এ অন্তর্ভুক্ত আছে। নির্দিষ্ট ঠিকানা আছে এমন সব রাজনৈতিক সত্তাকে রিট্রিভ করতে, আপনাকে রিভার্স জিওকোডিং ব্যবহার করতে হবে। এর জন্য, অনুরোধে প্যারামিটার হিসেবে ঠিকানার অক্ষাংশ/দ্রাঘিমাংশ পাস করতে হবে। - দুটি অনুরোধের মধ্যে উত্তর একই ফর্ম্যাটে থাকবে
এমন কোনও গ্যারান্টি নেই। বিশেষ করে,
address_componentsঅনুরোধ করা ঠিকানার উপর ভিত্তি করে পরিবর্তিত হয় এবং একই ঠিকানার জন্য সময়ের সাথে সাথে পরিবর্তিত হতে পারে। অ্যারের মধ্যে কোনও কম্পোনেন্টের পজিশন পরিবর্তন হতে পারে। কম্পোনেন্টের ধরন পরিবর্তন হতে পারে। পরবর্তী উত্তরে কোনও বিশেষ কম্পোনেন্ট উল্লেখ করা নাও থাকতে পারে।
business_statusকোনও জায়গা ব্যবসা হলে, সেটি চালু আছে কিনা তা বোঝায়। এতে নিম্নলিখিত মানগুলির মধ্যে একটি থাকতে পারে:OPERATIONALCLOSED_TEMPORARILYCLOSED_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 ফর্ম্যাটে দিনের সময় থাকতে পারে (মানগুলি ০০০০–২৩৫৯ রেঞ্জে থাকে)।time-এর তথ্য জায়গাটির টাইমজোনে রিপোর্ট করা হবে।
close-এ দিন ও সময়ের অবজেক্টের একটি পেয়ার থাকতে পারে যা জায়গাটি কখন বন্ধ হয় তা বর্ণনা করে। মনে রাখবেন: কোনও জায়গা সবসময় খোলা থাকলে, উত্তরের মধ্যেcloseবিভাগটি দেখানো হবে না। অ্যাপ্লিকেশন সবসময়-খোলা অবস্থাকেopenহিসেবে দেখাতে পারে যার মধ্যেday-এর মান হল ০ এবংtime-এর মান হল ০০০০, এবং কোনওcloseনেই।
weekday_textহল সাতটি স্ট্রিংয়ের একটি অ্যারে যা সপ্তাহের প্রতিটি দিনের জন্য ফর্ম্যাট করা খোলা থাকার সময়কে দেখায়। প্লেস বিবরণ অনুরোধে কোনওlanguageপ্যারামিটার উল্লেখ করা থাকলে, Places পরিষেবা সেই ভাষার জন্য খোলার সময়কে উপযুক্তভাবে ফর্ম্যাট ও লোকালাইজ করবে। এই অ্যারের এলিমেন্টগুলির ক্রম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, যদি উপলভ্য থাকে।languageIETF ভাষা কোড যা ব্যবহারকারীর রিভিউতে ব্যবহৃত ভাষা নির্দেশ করে। এই ফিল্ডে শুধুমাত্র মূল ভাষার ট্যাগ থাকে, দেশ বা অঞ্চল নির্দেশকারী সেকেন্ডারি ট্যাগ থাকে না। যেমন, সমস্ত ইংরেজি রিভিউ '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এই জায়গার জন্য নির্ভরযোগ্য ওয়েবসাইট তালিকাভুক্ত করে, যেমন কোনও ব্যবসার হোমপেজ।
মনে রাখবেন: মাল্টিডাইমেনশনাল রেটিং সব লোকেশনের জন্য উপলভ্য নাও হতে পারে। পর্যালোচনা খুব কম থাকলে, বিস্তারিত উত্তরে ০.০ থেকে ৫.০ স্কেলে লিগ্যাসি রেটিং (উপলভ্য থাকলে) অথবা কোনও রেটিংই থাকবে না।
প্লেস আইডি দিয়ে কোনও জায়গাকে রেফার করা
প্লেস আইডি হল Google Maps-এ কোনও জায়গার অনন্য রেফারেন্স। ব্যবসা, ল্যান্ডমার্ক, পার্ক এবং ইন্টারসেকশন সহ বেশিরভাগ লোকেশনের জন্য প্লেস আইডি উপলভ্য।
আপনার অ্যাপে কোনও প্লেস আইডি ব্যবহার করতে হলে, আপনাকে প্রথমে আইডিটি খুঁজে দেখতে হবে, যা
প্লেস সার্চ বা বিস্তারিত অনুরোধের 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+ Local ডেটাবেসে সেভ করা লক্ষ লক্ষ ফটো অ্যাক্সেস করার সুবিধা দেয়। আপনি যখন 'প্লেস বিবরণ' সংক্রান্ত অনুরোধ ব্যবহার করে কোনও জায়গার তথ্য পান, তখন প্রাসঙ্গিক ফটোগ্রাফিক কন্টেন্টের জন্য ফটো রেফারেন্স ফেরত দেওয়া হবে। এছাড়াও, প্রাসঙ্গিক হলে, Nearby Search ও টেক্সট সার্চের অনুরোধের উত্তরে প্রতিটি জায়গার জন্য একটি করে ফটো রেফারেন্স দেখানো হয়। ফটো পরিষেবা ব্যবহার করে আপনি রেফারেন্স করা ফটো অ্যাক্সেস করতে এবং আপনার অ্যাপ্লিকেশনের জন্য অপ্টিমাল সাইজে ছবি রিসাইজ করতে পারবেন।
PlacesService-এর বিরুদ্ধে করা যেকোনও getDetails(),
textSearch() বা
nearbySearch() অনুরোধের জন্য PlaceResult অবজেক্টের অংশ হিসেবে PlacePhoto অবজেক্টের একটি অ্যারে ফেরত দেওয়া হবে।
মনে রাখবেন: অনুরোধের ভিত্তিতে রিটার্ন করা ফটোর সংখ্যা আলাদা আলাদা হয়।
- 'আশেপাশের সার্চ' বা 'টেক্সট সার্চ' সর্বাধিক একটি
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 ফিল্ডে কোনও ভ্যালু থাকলে, আপনাকে অবশ্যই নিজের অ্যাপ্লিকেশনে অতিরিক্ত
অ্যাট্রিবিউশন যোগ করতে হবে, যেখানেই আপনি ছবিটি দেখান না কেন।