জিওকোডিং API v4 বেশ কিছু নতুন পদ্ধতি চালু করেছে যা API এর v3 এর কার্যকারিতা প্রতিস্থাপন করে। এই নির্দেশিকাটি আপনাকে দেখায় কিভাবে নতুন v4 পদ্ধতি ব্যবহার করার জন্য আপনার অ্যাপটি স্থানান্তর করবেন।
আপনি নতুন v4 পদ্ধতির সাথে আপনার বিদ্যমান API কীগুলি ব্যবহার করতে পারেন। তবে, যদি আপনি API এর v3 তে কোটা আপলিফ্টের অনুরোধ করে থাকেন, তাহলে আপনাকে অবশ্যই নতুন v4 API গুলিতে আপলিফ্টের অনুরোধ করতে হবে।
v3 থেকে মাইগ্রেট করুন ফরোয়ার্ড জিওকোডিং
যদি আপনি জিওকোডিং ব্যবহার করে ঠিকানা জিওকোড করেন, তাহলে আপনার v4 জিওকোড একটি ঠিকানা পদ্ধতিতে স্থানান্তর করা উচিত, যা একটি GET অনুরোধ গ্রহণ করে।
v4 API বিভিন্ন প্যারামিটারের নাম, কাঠামো এবং সমর্থন পরিবর্তন করে। আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনি প্রতিক্রিয়ায় যে ক্ষেত্রগুলি ফেরত চান তা নির্দিষ্ট করার জন্য একটি ফিল্ড মাস্ক ব্যবহার করুন ।
প্যারামিটার পরিবর্তনের অনুরোধ করুন
| v3 প্যারামিটার | v4 প্যারামিটার | মন্তব্য |
|---|---|---|
address , components | address | অসংগঠিত ঠিকানা (v3 address ) এখন URL পাথে পাস করা হয়েছে। কম্পোনেন্ট ফিল্টার (v3 components ) এখন address.* কোয়েরি প্যারামিটার হিসাবে পাস করা হয়েছে। |
bounds | locationBias.rectangle | নাম পরিবর্তন করা হয়েছে; কাঠামোটি বস্তুতে পরিবর্তিত হয়েছে। |
language | languageCode | নাম পরিবর্তন করা হয়েছে। |
region | regionCode | নাম পরিবর্তন করা হয়েছে। |
extra_computations | সরানো হয়েছে |
প্রতিক্রিয়া ক্ষেত্রের পরিবর্তন
| v3 ক্ষেত্র | v4 ক্ষেত্র | মন্তব্য |
|---|---|---|
status , error_message | সরানো হয়েছে | v4 HTTP স্ট্যাটাস কোড এবং ত্রুটি বডি ব্যবহার করে । |
results.address_components.long_name / results.address_components.short_name | results.addressComponents.longText / results.addressComponents.shortText | নাম পরিবর্তন করা হয়েছে। |
results.geometry.location_type | results.granularity | নাম পরিবর্তন করা হয়েছে। |
results.geometry.location | results.location | ক্ষেত্রের নাম: lat / lng -> latitude / longitude । |
results.geometry.viewport | results.viewport | ক্ষেত্রের নাম: northeast / southwest -> high / low । |
results.postcode_localities | results.postalCodeLocalities | পুনঃনামকরণ করা হয়েছে। এখন এক বা একাধিক এলাকার জন্য ফিরে এসেছে (v3 প্রয়োজন >1)। |
results.partial_match | সরানো হয়েছে | |
| নতুন | results.addressComponents.languageCode | নির্দিষ্ট ঠিকানা উপাদানের ভাষা। |
| নতুন | results.bounds | high / low ব্যবহার করে স্পষ্ট সীমানা। |
| নতুন | results.place | স্থানের জন্য সম্পদের নাম। |
| নতুন | results.postalAddress | স্ট্রাকচার্ড PostalAddress অবজেক্ট। |
v3 রিভার্স জিওকোডিং থেকে মাইগ্রেট করুন
যদি আপনি স্থানাঙ্কগুলিকে ঠিকানায় রূপান্তর করার জন্য রিভার্স জিওকোডিং ব্যবহার করেন, তাহলে আপনার v4 রিভার্স জিওকোডে একটি লোকেশন পদ্ধতিতে স্থানান্তর করা উচিত, যা একটি GET অনুরোধ গ্রহণ করে।
v4 API বিভিন্ন প্যারামিটারের নাম, কাঠামো এবং সমর্থন পরিবর্তন করে। আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনি প্রতিক্রিয়ায় যে ক্ষেত্রগুলি ফেরত চান তা নির্দিষ্ট করার জন্য একটি ফিল্ড মাস্ক ব্যবহার করুন ।
প্যারামিটার পরিবর্তনের অনুরোধ করুন
| v3 প্যারামিটার | v4 প্যারামিটার | মন্তব্য |
|---|---|---|
language | languageCode | নাম পরিবর্তন করা হয়েছে। |
region | regionCode | নাম পরিবর্তন করা হয়েছে। |
result_type | types | পুনঃনামকরণ করা হয়েছে; বারবার কোয়েরি প্যারামিটার ব্যবহার করে। |
location_type | granularity | পুনঃনামকরণ করা হয়েছে; বারবার কোয়েরি প্যারামিটার ব্যবহার করে। |
extra_computations | সরানো হয়েছে |
প্রতিক্রিয়া ক্ষেত্রের পরিবর্তন
| v3 ক্ষেত্র | v4 ক্ষেত্র | মন্তব্য |
|---|---|---|
status , error_message | সরানো হয়েছে | v4 HTTP স্ট্যাটাস কোড এবং ত্রুটি বডি ব্যবহার করে । |
results.address_components.long_name / results.address_components.short_name | results.addressComponents.longText / results.addressComponents.shortText | নাম পরিবর্তন করা হয়েছে। |
results.geometry.location_type | results.granularity | নাম পরিবর্তন করা হয়েছে। |
results.geometry.location | results.location | ক্ষেত্রের নাম: lat / lng -> latitude / longitude । |
results.geometry.viewport | results.viewport | ক্ষেত্রের নাম: northeast / southwest -> high / low । |
| নতুন | results.addressComponents.languageCode | নির্দিষ্ট ঠিকানা উপাদানের ভাষা। |
| নতুন | results.bounds | high / low ব্যবহার করে স্পষ্ট সীমানা। |
| নতুন | results.place | স্থানের জন্য সম্পদের নাম। |
| নতুন | results.postalAddress | স্ট্রাকচার্ড PostalAddress অবজেক্ট। |
v3 প্লেস জিওকোডিং থেকে মাইগ্রেট করুন
যদি আপনি জিওকোডিং v3 ব্যবহার করে একটি নির্দিষ্ট প্লেস আইডির ঠিকানা পেতে place_id ব্যবহার করেন, তাহলে আপনাকে v4 প্লেস জিওকোডিং পদ্ধতিতে মাইগ্রেট করতে হবে, যা একটি GET অনুরোধ গ্রহণ করে।
v4 API বিভিন্ন প্যারামিটারের নাম, কাঠামো এবং সমর্থন পরিবর্তন করে। আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনি প্রতিক্রিয়ায় যে ক্ষেত্রগুলি ফেরত চান তা নির্দিষ্ট করার জন্য একটি ফিল্ড মাস্ক ব্যবহার করুন ।
প্যারামিটার পরিবর্তনের অনুরোধ করুন
| v3 প্যারামিটার | v4 প্যারামিটার | মন্তব্য |
|---|---|---|
place_id | অনুরোধের ক্ষেত্রের প্রোটো place | প্লেস আইডি এখন একটি পাথ প্যারামিটার places/{place} হিসেবে প্রদান করা হয়েছে, উদাহরণস্বরূপ: https://geocode.googleapis.com/v4beta/geocode/places/ChIJj61dQgK6j4AR4GeTYWZsKWw । এটি অন্তর্নিহিত অনুরোধের প্লেস ফিল্ডে ম্যাপ করে। |
language | languageCode | নাম পরিবর্তন করা হয়েছে। |
region | regionCode | নাম পরিবর্তন করা হয়েছে। |
প্রতিক্রিয়া ক্ষেত্রের পরিবর্তন
| v3 ক্ষেত্র | v4 ক্ষেত্র | মন্তব্য |
|---|---|---|
status , error_message | সরানো হয়েছে | v4 HTTP স্ট্যাটাস কোড এবং ত্রুটি বডি ব্যবহার করে । |
results | (মূল) | v4 একটি একক ফলাফল বস্তু প্রদান করে, একটি results অ্যারে নয়। |
results.address_components.long_name / results.address_components.short_name | addressComponents.longText / addressComponents.shortText | নাম পরিবর্তন করা হয়েছে। |
results.geometry.location_type | granularity | নাম পরিবর্তন করা হয়েছে। |
results.geometry.location | location | ক্ষেত্রের নাম: lat / lng -> latitude / longitude । |
results.geometry.viewport | viewport | ক্ষেত্রের নাম: northeast / southwest -> high / low । |
results.postcode_localities | postalCodeLocalities | পুনঃনামকরণ করা হয়েছে। এখন এক বা একাধিক এলাকার জন্য ফিরে এসেছে (v3 প্রয়োজন >1)। |
| নতুন | addressComponents.languageCode | নির্দিষ্ট ঠিকানা উপাদানের ভাষা। |
| নতুন | bounds | high / low ব্যবহার করে স্পষ্ট সীমানা। |
| নতুন | place | স্থানের জন্য সম্পদের নাম। |
| নতুন | postalAddress | স্ট্রাকচার্ড PostalAddress অবজেক্ট। |
জিওকোডিং হাইপারলোকাল ডেটা থেকে গন্তব্যে স্থানান্তর করুন
জিওকোডিং API v3-এর নিম্নলিখিত বৈশিষ্ট্যগুলি জিওকোডিং API v4-এর SearchDestinations পদ্ধতি দ্বারা প্রতিস্থাপিত হচ্ছে:
- প্রবেশপথ
- নেভিগেশন পয়েন্ট
- ভবনের রূপরেখা
- মাঠ
যদি আপনি উপরের বৈশিষ্ট্যগুলির জন্য Geocoding API v3 ব্যবহার করে থাকেন, তাহলে এই বৈশিষ্ট্যগুলি পেতে SearchDestinations পদ্ধতি ব্যবহার করতে সাহায্য করার জন্য এই নথিটি ব্যবহার করুন। এই নথিতে ব্যাখ্যা করা হয়েছে যে SearchDestinations প্রতিক্রিয়ায় কোথায় এই বৈশিষ্ট্যগুলি খুঁজে পাওয়া যায় এবং Geocoding API v3 এবং Geocoding API v4 এর SearchDestinations পদ্ধতির মধ্যে API প্রতিক্রিয়াগুলিতে এই বৈশিষ্ট্যগুলি কীভাবে উপস্থাপন করা হয় তার পার্থক্য রয়েছে।
প্রবেশপথ
একটি destination সাথে যুক্ত প্রবেশপথগুলি পেতে, destination.entrances ক্ষেত্রটি ব্যবহার করুন।
মনে রাখবেন যে একটি entrance ফর্ম্যাট Geocoding API v3 এর প্রবেশপথের ফর্ম্যাট থেকে কিছুটা আলাদা। destination.entrances এর প্রতিটি প্রবেশপথে নিম্নলিখিত ক্ষেত্রগুলি রয়েছে:
-
displayName- এটি একটি নতুন ঐচ্ছিক ক্ষেত্র যেখানে প্রবেশদ্বারের জন্য একটি মানুষের পঠনযোগ্য নাম থাকবে, উদাহরণস্বরূপ "Gate B"। -
location- এটিLatLngধরণের একটি অবস্থান, যা Geocoding API v3 তে ব্যবহৃত ফর্ম্যাট থেকে আলাদা। -
tags- এটি জিওকোডিং API v3 এর প্রবেশপথেরtagsক্ষেত্রের মতোই। -
place- Geocoding API v3 থেকে প্রবেশপথেরbuildingPlaceIdক্ষেত্রের অনুরূপ। তবে, এই ক্ষেত্রের Place ID যেকোনো ধরণের স্থানের জন্য হতে পারে, শুধুমাত্র একটি ভবনের জন্য নয়।
নেভিগেশন পয়েন্ট
একটি destination সাথে সম্পর্কিত নেভিগেশন পয়েন্টগুলি পেতে, destination.navigationPoints ক্ষেত্রটি ব্যবহার করুন।
মনে রাখবেন যে navigationPoint এর ফর্ম্যাট Geocoding API v3 এর নেভিগেশন পয়েন্ট ফর্ম্যাট থেকে কিছুটা আলাদা। destination.navigationPoints এর প্রতিটি নেভিগেশন পয়েন্টে নিম্নলিখিত ক্ষেত্রগুলি থাকে:
-
displayName- এটি একটি নতুন ঐচ্ছিক ক্ষেত্র যেখানে নেভিগেশন পয়েন্টের জন্য একটি মানুষের পঠনযোগ্য নাম থাকবে, উদাহরণস্বরূপ "৫ম এভিনিউ"। -
location- এটিLatLngধরণের একটি অবস্থান, যা Geocoding API v3 তে ব্যবহৃত ফর্ম্যাট থেকে আলাদা। -
travelModes- এটি Geocoding API v3 থেকে নেভিগেশন পয়েন্টেরrestrictedTravelModesফিল্ডের অনুরূপ। সম্ভাব্য enum মানগুলি একই, একমাত্র পার্থক্য হল এই ক্ষেত্রটি এখন নেভিগেশন পয়েন্টের জন্য গ্রহণযোগ্য ভ্রমণ মোডগুলিকে প্রতিনিধিত্ব করে, সীমাবদ্ধ ভ্রমণ মোডগুলির পরিবর্তে। -
usage- এটি একটি নতুন ক্ষেত্র যেখানে নেভিগেশন পয়েন্ট দ্বারা সমর্থিত ব্যবহারের কেসগুলি রয়েছে। মনে রাখবেন যে বেশিরভাগ নেভিগেশন পয়েন্টের একটিUNKNOWNব্যবহার থাকবে, তবে এর অর্থ এই নয় যে নেভিগেশন পয়েন্টের ব্যবহার কোনওভাবেই সীমাবদ্ধ।
ভবনের রূপরেখা
কোনও destination সাথে সম্পর্কিত ভবনের রূপরেখা পেতে, আপনার destination placeView অবজেক্টের displayPolygon ফিল্ড ব্যবহার করা উচিত যা ভবনগুলিকে প্রতিনিধিত্ব করে। প্রতিটি placeView এর জন্য, আপনি placeView.structureType ফিল্ড ব্যবহার করে এটি একটি ভবন কিনা তা পরীক্ষা করতে পারেন। যদি কাঠামোর ধরণ BUILDING হয়, তাহলে আপনি placeView.displayPolygon ফিল্ড থেকে রূপরেখা পেতে পারেন। placeView ভবনের জন্য অতিরিক্ত ক্ষেত্রও থাকবে যা Geocoding API v3 তে ছিল না।
একটি destination একটি placeView অবজেক্ট থাকতে পারে যা নিম্নলিখিত ক্ষেত্রগুলিতে একটি ভবনকে প্রতিনিধিত্ব করে:
-
destination.primary- এটি গন্তব্যের প্রাথমিক স্থান। -
destination.containingPlaces- এটি একটি পুনরাবৃত্ত ক্ষেত্র যা বৃহত্তর স্থানগুলিকে ধরে রাখতে পারে যা প্রাথমিক স্থানটিকে "ধারণ করে"। উদাহরণস্বরূপ, যদি প্রাথমিক স্থানটি একটিsubpremiseহয়, তাহলেcontainingPlacesসাধারণত ভবনের প্রতিনিধিত্বকারীplaceViewধারণ করবে। -
destination.subDestinations- এটি একটি পুনরাবৃত্ত ক্ষেত্র যা প্রাথমিক স্থানের উপ-গন্তব্য ধারণ করতে পারে। উদাহরণস্বরূপ, একটি ভবনের পৃথক অ্যাপার্টমেন্ট ইউনিট। এই ক্ষেত্রটিতে সাধারণত একটি ভবনের প্রতিনিধিত্বকারী কোনওplaceViewথাকবে না।
মনে রাখবেন যে placeView.displayPolygon এর ফর্ম্যাটটি RFC 7946 ফর্ম্যাট ব্যবহার করে Geocoding API v3, যা GeoJSON ফর্ম্যাট, এর বিল্ডিং আউটলাইন ফর্ম্যাটের সাথে মেলে।
মাঠ
বিল্ডিং আউটলাইনের মতো, কোনও destination সাথে সম্পর্কিত গ্রাউন্ডগুলি পেতে, আপনার destination placeView অবজেক্টের displayPolygon ফিল্ড ব্যবহার করা উচিত যা গ্রাউন্ডগুলি উপস্থাপন করে। প্রতিটি placeView জন্য, আপনি placeView.structureType ফিল্ড দিয়ে এটি গ্রাউন্ড কিনা তা পরীক্ষা করতে পারেন। যদি স্ট্রাকচারের ধরণটি GROUNDS হয়, তাহলে আপনি placeView.displayPolygon ফিল্ড থেকে রূপরেখাটি পেতে পারেন। placeView জিওকোডিং API v3 তে না থাকা গ্রাউন্ডগুলির জন্য অতিরিক্ত ক্ষেত্রও থাকবে।
একটি destination একটি placeView অবজেক্ট থাকতে পারে যা নিম্নলিখিত ক্ষেত্রগুলিতে একটি ভিত্তি উপস্থাপন করে:
-
destination.primary -
destination.containingPlaces -
destination.subDestinations
মনে রাখবেন যে placeView.displayPolygon এর ফর্ম্যাটটি RFC 7946 ফর্ম্যাট ব্যবহার করে Geocoding API v3, যা GeoJSON ফর্ম্যাট, এর গ্রাউন্ডস আউটলাইন ফর্ম্যাটের সাথে মেলে।
এই বৈশিষ্ট্যগুলি অনুরোধ করতে একটি ফিল্ড মাস্ক ব্যবহার করুন
SearchDestinations পদ্ধতিতে একটি ফিল্ড মাস্ক প্রয়োজন, যেমনটি "Choose fields to return" বিভাগে ব্যাখ্যা করা হয়েছে। সমস্ত ফিল্ড ফেরত দেওয়ার জন্য ফিল্ড মাস্কটি * তে সেট করা যেতে পারে, অথবা আপনি যে নির্দিষ্ট ফিল্ডগুলি পেতে চান তাতে সেট করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত API অনুরোধটি ফিল্ড মাস্কটিকে একটি গন্তব্যের প্রবেশপথ, নেভিগেশন পয়েন্ট, বিল্ডিং আউটলাইন এবং ভিত্তি পেতে প্রয়োজনীয় সমস্ত ফিল্ডগুলি গ্রহণ করার জন্য সেট করে:
curl -X POST -d '{"place": "places/ChIJG3kh4hq6j4AR_XuFQnV0_t8"}' \
-H "X-Goog-Api-Key: API_KEY" \
-H "Content-Type: application/json" \
-H "X-Goog-FieldMask: destinations.entrances,destinations.navigationPoints,destinations.primary,destinations.containingPlaces,destinations.subDestinations" \
https://geocode.googleapis.com/v4beta/geocode/destinations
নিরাপত্তা বিবেচনা
জিওকোডিং API v4 একটি সার্ভার-টু-সার্ভার API হিসেবে ডিজাইন করা হয়েছে। জাভাস্ক্রিপ্ট ব্যবহারকারীদের জন্য v3 থেকে v4 তে সরাসরি মাইগ্রেশন পাথ নেই। ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট থেকে (উদাহরণস্বরূপ, একটি ব্রাউজারে) API কী ব্যবহার করে সরাসরি v4 পদ্ধতিতে কল করলে আপনার API কী চুরি এবং অপব্যবহারের উচ্চ ঝুঁকির সম্মুখীন হয়।
HTTP রেফারার সীমাবদ্ধতা, যদিও কার্যকর, ওয়েব পরিষেবার শেষ বিন্দুগুলির জন্য পর্যাপ্ত সুরক্ষা নয় কারণ আক্রমণকারীরা তাদের অনুরোধে Referer হেডার জাল করে, তারা এগুলিকে তুচ্ছভাবে এড়িয়ে যেতে পারে।
প্রস্তাবিত পদ্ধতি
জিওকোডিং API v4 ব্যবহার করার প্রস্তাবিত উপায় হল আপনার নিজস্ব ব্যাকএন্ড সার্ভার থেকে। আপনার ক্লায়েন্ট অ্যাপ্লিকেশনটি এই মধ্যস্থতাকারী সার্ভারে অনুরোধ করবে, যা তারপর সুরক্ষিতভাবে একটি সুরক্ষিত API কী (উদাহরণস্বরূপ, একটি পরিবেশ ভেরিয়েবলে সংরক্ষিত একটি কী বা একটি গোপন ব্যবস্থাপক) ব্যবহার করে Google API-কে কল করবে। এটি নিশ্চিত করে যে আপনার API কী কখনও ফ্রন্টএন্ড কোডে প্রকাশিত হবে না।
ক্লায়েন্ট-পক্ষের চাহিদার জন্য বিকল্প
যদি আপনার ক্লায়েন্ট-সাইড চাহিদা থাকে যার জন্য জিওকোডিং প্রয়োজন হয়, তাহলে বিদ্যমান ক্লায়েন্ট-সাইড সমাধানগুলির মধ্যে একটি ব্যবহার করার কথা বিবেচনা করুন:
- ম্যাপস জাভাস্ক্রিপ্ট এপিআই-তে জিওকোডিং পরিষেবা: জিওকোডিং পরিষেবাটি v3 ব্যাকএন্ড ব্যবহার করে চলেছে এবং এটি ব্রাউজার পরিবেশে ব্যবহারের জন্য ডিজাইন করা হয়েছে।
- Places UI Kit: ঠিকানা-সম্পর্কিত ব্যবহারকারী ইন্টারফেস উপাদানগুলির জন্য Places UI Kit ব্যবহার করুন, যার মধ্যে Place Autocomplete উপাদানগুলিও অন্তর্ভুক্ত।