ম্যাপস টুলস রেজোলিউশন এপিআই লোকেশনের নাম এবং ইউআরএল-কে গুগল ম্যাপস প্লেস আইডি-তে রূপান্তর করার জন্য ব্যাচ প্রসেসিং এন্ডপয়েন্ট সরবরাহ করে।
এপিআই অ্যাক্সেস এবং প্রমাণীকরণ
প্রমাণীকরণ পদ্ধতি
এপিআইগুলো এপিআই কী এবং ওঅথ ২.০ উভয় প্রকার ক্রেডেনশিয়াল সমর্থন করে:
১. এপিআই কী
আপনি অনুরোধের URL-এর শেষে অথবা X-Goog-Api-Key হেডারে একটি বৈধ Google Maps Platform API Key যুক্ত করে অনুরোধগুলি প্রমাণীকরণ করতে পারেন:
https://mapstools.googleapis.com/v1alpha:resolveNames?key=YOUR_API_KEY
২. OAuth 2.0 স্কোপ
OAuth অনুমোদন ব্যবহার করলে, নিম্নলিখিত স্কোপগুলি সমর্থিত হয়:
-
https://www.googleapis.com/auth/maps-platform.mapstools(প্রস্তাবিত)
অনুরোধ যাচাইকরণ এবং সীমাবদ্ধতা
অতিরিক্ত চাপ এড়াতে এবং দ্রুত প্রতিক্রিয়া সময় নিশ্চিত করতে, ব্যাচ অনুরোধগুলি কঠোরভাবে যাচাই করা হয়:
- ব্যাচ সাইজ সীমা : উভয় এপিআই প্রতি অনুরোধে সর্বোচ্চ ২০টি আইটেম অনুমোদন করে।
- ResolveNames এর প্রয়োজনীয়তা :
- প্রতিটি কোয়েরি আইটেমে অবশ্যই একটি অ-খালি টেক্সট প্যারামিটার উল্লেখ করতে হবে।
- কোয়েরিতে অবশ্যই একটি নির্দিষ্ট স্থানের নাম বা ঠিকানা উল্লেখ থাকতে হবে (যেমন, "Googleplex, Mountain View, CA", "Eiffel Tower, Paris")।
- সাধারণ বিভাগীয় অনুসন্ধান (যেমন, "নিউ ইয়র্কের রেস্তোরাঁ") অথবা অবস্থান উল্লেখ না করে সাধারণ চেইনের নাম (যেমন, "স্টারবাকস") সমর্থিত নয় এবং এর সমাধান ব্যর্থ হতে পারে।
- ResolveMapsUrls-এর প্রয়োজনীয়তা :
- প্রতিটি URL অবশ্যই গঠনগতভাবে বৈধ একটি গুগল ম্যাপস URL হতে হবে।
- সমর্থিত ফরম্যাটগুলো হলো:
- সাধারণ স্থানের ইউআরএল:
https://www.google.com/maps/place/... - সংক্ষিপ্ত ইউআরএল:
https://maps.app.goo.gl/...
- সাধারণ স্থানের ইউআরএল:
- সাধারণ কোয়েরি-ভিত্তিক ম্যাপস ইউআরএল (যেমন,
https://maps.google.com/?q=restaurant) এবং যেসব ইউআরএল কোনো একটি নির্দিষ্ট স্থানকে নির্দেশ করে না, সেগুলো সমর্থিত নয় ।
আংশিক ত্রুটি পরিচালনা করা
উভয় এপিআই-ই ব্যাচ প্রসেসর হিসেবে ডিজাইন করা হয়েছে। যদি কোনো ব্যাচের কিছু আইটেম সমাধান হতে ব্যর্থ হয়, তবে সামগ্রিক অনুরোধটি কোনো শীর্ষ-স্তরের ত্রুটির কারণে ব্যর্থ হয় না । পরিবর্তে, এপিআইটি একটি 'আংশিক সফল' (Partial Success) প্রতিক্রিয়া ফেরত দেয়।
প্রতিক্রিয়াটি কীভাবে ব্যাখ্যা করবেন
- নিশ্চিত ১:১ অ্যালাইনমেন্ট : ফেরত আসা ফলাফলের (
ResolveNamesজন্য) বা এনটিটিগুলোর (ResolveMapsUrlsএর জন্য) তালিকাগুলো ইনপুট তালিকার সাথে ১:১ অনুপাতে ম্যাপ করে। - ব্যর্থতার জন্য খালি উপাদান : যদি
iসূচকের কোনো আইটেম সমাধান করতে ব্যর্থ হয়, তাহলে ফলাফল তালিকায়iসূচকে একটি খালি অবজেক্ট{}থাকবে। - failedRequests Map : রেসপন্সটিতে একটি
failedRequestsম্যাপ থাকে।- মূল বিষয়টি হলো ব্যর্থ আইটেমটির ০-ভিত্তিক সূচক (যা JSON-এ একটি স্ট্রিং হিসাবে উপস্থাপিত হয়)।
- এর মান হলো একটি
google.rpc.Statusঅবজেক্ট, যাতে নির্দিষ্ট এরর কোড (স্ট্যান্ডার্ড gRPC/HTTP স্ট্যাটাস থেকে নেওয়া) এবং ব্যর্থতার কারণ ব্যাখ্যা করে একটি বিস্তারিত বার্তা থাকে।
শীর্ষ-স্তরের ব্যর্থতা
একটি শীর্ষ-স্তরের HTTP ত্রুটি (যেমন, 400 Bad Request ) শুধুমাত্র তখনই ফেরত দেওয়া হয়, যখন অনুরোধটি বৈধতা যাচাইয়ে ব্যর্থ হয় (যেমন, ২০টির বেশি আইটেম দিলে বা প্রয়োজনীয় ফিল্ড অনুপস্থিত থাকলে)।
এপিআই স্পেসিফিকেশন এবং কার্ল উদাহরণ
১. ResolveNames API
পদ্ধতি: পোস্ট
https://mapstools.googleapis.com/v1alpha:resolveNames
অনুরোধের মূল অংশের বিন্যাস
{
"queries": [
{ "text": "string" }
],
"locationBias": {
"viewport": {
"low": { "latitude": number, "longitude": number },
"high": { "latitude": number, "longitude": number }
}
},
"regionCode": "string"
}
-
queries(আবশ্যক): সমাধান করার জন্য পুনরাবৃত্ত কোয়েরির তালিকা (সর্বোচ্চ ২০টি)। -
locationBias(ঐচ্ছিক): ফলাফলকে একটি স্থানীয় অঞ্চলের দিকে পক্ষপাতদুষ্ট করার জন্য ভিউপোর্ট বাউন্ডিং বক্স। -
regionCode(ঐচ্ছিক): ফলাফলকে প্রভাবিত করার জন্য CLDR দেশের কোড (যেমন "US", "FR")।
কার্ল উদাহরণ: সফল সমাধান
এই কোয়েরিটি 'Googleplex' এবং 'Eiffel Tower' সনাক্ত করে।
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"queries": [
{ "text": "Googleplex, Mountain View, CA" },
{ "text": "Eiffel Tower, Paris" }
]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveNames?key=KEY"
JSON প্রতিক্রিয়া
{
"results": [
{
"entity": {
"place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
},
"confidence": "HIGH"
},
{
"entity": {
"place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
"confidence": "HIGH"
}
]
}
কার্লের উদাহরণ: মিশ্র ফলাফল (আংশিক ব্যর্থতা)
এই উদাহরণে, প্রথম আইটেমটি হলো সমাধান-অযোগ্য আবর্জনা টেক্সট, এবং দ্বিতীয় আইটেমটি একটি বৈধ স্থান।
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"queries": [
{ "text": "This is not a real place name at all 123456789" },
{ "text": "Eiffel Tower, Paris" }
]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveNames?key=KEY"
JSON প্রতিক্রিয়া
{
"results": [
{},
{
"entity": {
"place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
"confidence": "HIGH"
}
],
"failedRequests": {
"0": {
"code": 5,
"message": "Place not found."
}
}
}
২. ResolveMapsUrls API
পদ্ধতি: পোস্ট
https://mapstools.googleapis.com/v1alpha:resolveMapsUrls
অনুরোধের মূল অংশের বিন্যাস
{
"urls": [
"string"
]
}
-
urls(আবশ্যক): সমাধান করার জন্য গুগল ম্যাপস ইউআরএল স্ট্রিং-এর পুনরাবৃত্ত তালিকা (সর্বোচ্চ ২০টি)।
কার্ল উদাহরণ: সফল সমাধান
একটি সাধারণ গুগল ম্যাপস প্লেস লিঙ্ক সমাধান করা।
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0862515,17z/data=!3m1!4b1!4m6!3m5!1s0x808fba024255ad8f:0x6ca26666619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6"
]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveMapsUrls?key=KEY"
JSON প্রতিক্রিয়া
{
"entities": [
{
"place": "places/ChIJj61VQgK6j4AR4GeTYWZmomw"
}
]
}
কার্লের উদাহরণ: মিশ্র ফলাফল (আংশিক ব্যর্থতা)
একটি বৈধ স্থানের ইউআরএল এবং একটি ত্রুটিপূর্ণ/অসমর্থিত ইউআরএল সমাধান করা হচ্ছে।
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0862515,17z/data=!3m1!4b1!4m6!3m5!1s0x808fba024255ad8f:0x6ca26666619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6",
"https://www.google.com/not-a-place"
]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveMapsUrls?key=KEY"
JSON প্রতিক্রিয়া
{
"entities": [
{
"place": "places/ChIJj61VQgK6j4AR4GeTYWZmomw"
},
{}
],
"failedRequests": {
"1": {
"code": 3,
"message": "Invalid URL."
}
}
}
কার্ল উদাহরণ: বৈধতা ব্যর্থতা
একটি অনুরোধে ২০টির বেশি ইউআরএল পাঠানোর চেষ্টা করা হচ্ছে।
python3 -c 'import json; print(json.dumps({"urls": ["https://www.google.com/maps/place/Googleplex"] * 21}))' | \
curl -X POST \
-H "Content-Type: application/json" \
-d @- \
"https://mapstools.googleapis.com/v1alpha:resolveMapsUrls?key=KEY"
JSON প্রতিক্রিয়া
{
"error": {
"code": 400,
"message": "Request contains more than 20 URLs.",
"status": "INVALID_ARGUMENT"
}
}