এক নজরে
জিওকোডিং হল ঠিকানা (যেমন "1600 Amphitheatre Parkway, Mountain View, CA") ভৌগোলিক স্থানাঙ্কে (যেমন অক্ষাংশ 37.423021 এবং দ্রাঘিমাংশ -122.083739) পরিবর্তন করার প্রসেস, যা আপনি মার্কার বা ম্যাপে পজিশন সেট করতে ব্যবহার করতে পারেন।
রিভার্স জিওকোডিং হল ভৌগোলিক স্থানাঙ্ককে মানুষের-পঠনযোগ্য ঠিকানায় পরিবর্তন করার প্রসেস (রিভার্স জিওকোডিং (ঠিকানা খোঁজা) দেখুন)।
এছাড়াও, আপনি কোনও নির্দিষ্ট প্লেস আইডি-এর ঠিকানা খুঁজতে জিওকোডার ব্যবহার করতে পারেন।
Maps JavaScript API, ব্যবহারকারীর ইনপুট থেকে ডায়নামিকভাবে জিওকোডিং ও রিভার্স জিওকোডিং করার জন্য Geocoder ক্লাস প্রদান করে। পরিবর্তে আপনি যদি স্ট্যাটিক, পরিচিত ঠিকানা জিওকোড করতে চান, তাহলে জিওকোডিং ওয়েব পরিষেবা দেখুন।
শুরু করুন
Maps JavaScript API-তে Geocoding পরিষেবা ব্যবহার করার আগে, প্রথমে নিশ্চিত করুন যে Geocoding API, Google Cloud কনসোলে চালু করা আছে, একই প্রোজেক্টে যা আপনি Maps JavaScript API-এর জন্য সেট-আপ করেছেন।
আপনার চালু করা API-এর তালিকা দেখতে:
- Google Cloud Console-এ যান।
- প্রোজেক্ট বেছে নিন বোতামে ক্লিক করুন, তারপর Maps JavaScript API-এর জন্য সেট-আপ করা একই প্রোজেক্ট বেছে নিয়ে খুলুন বিকল্পে ক্লিক করুন।
- ড্যাশবোর্ড-এ API-এর তালিকা থেকে, Geocoding API খুঁজুন।
- তালিকায় API দেখতে পেলে, আপনি একদম রেডি। API তালিকাভুক্ত না থাকলে,
এটি চালু করুন:
- পৃষ্ঠার সবচেয়ে উপরে, লাইব্রেরি ট্যাব দেখতে API চালু করুন বিকল্প বেছে নিন। অথবা, বাঁদিকের মেনু থেকে, লাইব্রেরি বেছে নিন।
- Geocoding API সার্চ করে ফলাফলের তালিকা থেকে এটি বেছে নিন।
- চালু করুন বিকল্প বেছে নিন। প্রসেস সম্পূর্ণ হয়ে গেলে, ড্যাশবোর্ডে API-এর তালিকায় Geocoding API দেখতে পাবেন।
দাম ও নীতি
দাম
JavaScript Geocoding পরিষেবার দাম ও ব্যবহার সংক্রান্ত নীতি সম্পর্কে জানতে, Geocoding API-এর জন্য ব্যবহার ও বিলিং দেখুন।
নীতি
আপনাকে Geocoding API-এর নীতি অনুযায়ী Geocoding পরিষেবা ব্যবহার করতে হবে।
Geocoding Requests
জিওকোডিং পরিষেবা অ্যাক্সেস করা অ্যাসিঙ্ক্রোনাস, যার জন্য একটি বাহ্যিক সার্ভারে কল করতে হয়। এই কারণে, geocode পদ্ধতিটি একটি প্রতিশ্রুতি প্রদান করে যা অনুরোধ সম্পূর্ণ হওয়ার পরে
সমাধান করা হয়। সমাধান হয়ে গেলে, আপনি .then() বা await ব্যবহার করে
উত্তর দিতে পারবেন।
আপনি google.maps.Geocoder কনস্ট্রাক্টর অবজেক্ট ব্যবহার করে আপনার কোডের মধ্যে Google Maps API জিওকোডিং পরিষেবা অ্যাক্সেস করেন। Geocoder.geocode() পদ্ধতিটি জিওকোডিং
পরিষেবার জন্য একটি অনুরোধ শুরু করে, এটিতে ইনপুট শর্তাবলী সহ একটি GeocoderRequest অবজেক্ট লিটারেল
এবং উত্তর পাওয়ার পরে কার্যকর করার জন্য একটি কলব্যাক পদ্ধতি পাস করে।
GeocoderRequest অবজেক্ট লিটারাল-এ নিম্নলিখিত ফিল্ডগুলি থাকে:
{ address: string, location: LatLng, placeId: string, bounds: LatLngBounds, componentRestrictions: GeocoderComponentRestrictions, region: string }
প্রয়োজনীয় প্যারামিটার: আপনাকে নিম্নলিখিত ফিল্ডগুলির মধ্যে একটি, এবং শুধুমাত্র একটিই, প্রদান করতে হবে:
address— যে ঠিকানা আপনি জিওকোড করতে চান।
অথবা
location—LatLng(অথবাLatLngLiteral) যার জন্য আপনি সবচেয়ে কাছাকাছি, মানুষের-পঠনযোগ্য ঠিকানা পেতে চান। জিওকোডার রিভার্স জিওকোড পারফর্ম করে। আরও তথ্যের জন্য রিভার্স জিওকোডিং দেখুন।
অথবা
placeId— যে জায়গার জন্য আপনি সবচেয়ে কাছের, মানুষের-পঠনযোগ্য ঠিকানা পেতে চান, সেই জায়গার আইডি। কোনও জায়গা আইডির জন্য ঠিকানা ফিরিয়ে আনা সম্পর্কে আরও জানুন।
ঐচ্ছিক প্যারামিটার:
bounds—LatLngBoundsযার মধ্যে জিওকোড ফলাফল আরও স্পষ্টভাবে পক্ষপাতিত্ব করতে হবে।boundsপ্যারামিটার জিওকোডার থেকে পাওয়া ফলাফলকে শুধু প্রভাবিত করবে, পুরোপুরি সীমাবদ্ধ করবে না। ভিউপোর্ট বায়াসিং সম্পর্কে আরও তথ্য নিচে দেখুন।componentRestrictions— নির্দিষ্ট এলাকার মধ্যে ফলাফল সীমাবদ্ধ করতে ব্যবহার করা হয়। কম্পোনেন্ট ফিল্টারিং সম্পর্কে আরও তথ্য নিচে দেখুন।region— অঞ্চল কোড, দুই-অক্ষরের (সংখ্যা নয়) ইউনিকোড অঞ্চল সাবট্যাগ হিসেবে উল্লেখ করা হয়েছে। বেশিরভাগ ক্ষেত্রে, এই ট্যাগগুলি সরাসরি পরিচিত ccTLD ("টপ-লেভেল ডোমেন") দুটি-অক্ষরের মানের সাথে ম্যাপ করে।regionপ্যারামিটার জিওকোডার থেকে পাওয়া ফলাফলকে শুধুমাত্র প্রভাবিত করবে, সম্পূর্ণভাবে সীমাবদ্ধ করবে না। রিজিয়ন কোড বায়াসিং সম্পর্কে আরও তথ্য নিচে দেখুন।extraComputations— এই প্যারামিটারের জন্য অনুমোদিত একমাত্র ভ্যালু হলADDRESS_DESCRIPTORS। আরও বিবরণের জন্য ঠিকানার বিবরণ দেখুন।fulfillOnZeroResults— উত্তরে ZERO_RESULT স্ট্যাটাস সংক্রান্ত প্রতিশ্রুতি পূরণ করুন। এটি বাঞ্ছনীয় হতে পারে কারণ শূন্য জিওকোডিং ফলাফল থাকলেও এখনও অতিরিক্ত রেসপন্স লেভেল ফিল্ড ফেরত আসতে পারে। আরও বিবরণের জন্য কোনও ফলাফল না থাকলে পূরণ করুন বিকল্পটি দেখুন।
জিওকোডিং সংক্রান্ত উত্তর
জিওকোডিং পরিষেবার জন্য জিওকোডারের ফলাফল ফিরিয়ে আনার পরে
কলব্যাক পদ্ধতি কার্যকর করা প্রয়োজন। এই কলব্যাককে results এবং status কোড, এই ক্রমে ধরে রাখার জন্য দুটি প্যারামিটার পাস করতে হবে।
জিওকোডিং ফলাফল
GeocoderResult অবজেক্ট একটি একক
জিওকোডিং ফলাফলকে উপস্থাপন করে। জিওকোড অনুরোধ একাধিক ফলাফল অবজেক্ট দেখাতে পারে:
results[]: { types[]: string, formatted_address: string, address_components[]: { short_name: string, long_name: string, postcode_localities[]: string, types[]: string }, partial_match: boolean, place_id: string, postcode_localities[]: string, geometry: { location: LatLng, location_type: GeocoderLocationType viewport: LatLngBounds, bounds: LatLngBounds } }
এইসব ফিল্ডের ব্যাপারে নিচে ব্যাখ্যা করা হয়েছে:
types[]হল একটি অ্যারে যা রিটার্ন করা ফলাফলের ঠিকানার ধরন নির্দেশ করে। এই অ্যারেতে শূন্য বা তার বেশি ট্যাগের সেট থাকে যা ফলাফলে দেখানো ফিচারের ধরন শনাক্ত করে। যেমন, "শিকাগো"র জিওকোড "লোকালিটি" রিটার্ন করে যা ইঙ্গিত করে যে "শিকাগো" একটি শহর এবং "রাজনৈতিক" রিটার্ন করে যা ইঙ্গিত করে যে এটি একটি রাজনৈতিক সত্তা। ঠিকানার ধরন ও ঠিকানার কম্পোনেন্টের ধরন সম্পর্কে আরও তথ্য নিচে দেখুন।formatted_addressহল একটি স্ট্রিং যাতে এই লোকেশনের মানুষের-পঠনযোগ্য ঠিকানা থাকে।সাধারণত এই ঠিকানা পোস্টাল ঠিকানার সমতুল্য হয়। মনে রাখবেন, যুক্তরাজ্য সহ কিছু দেশে লাইসেন্সিং সংক্রান্ত বিধিনিষেধের কারণে আসল ডাক ঠিকানা ডিস্ট্রিবিউট করার অনুমতি দেওয়া হয় না।
ফর্ম্যাট করা ঠিকানা এক বা একাধিক ঠিকানার কম্পোনেন্ট নিয়ে গঠিত। যেমন, "111 8th Avenue, New York, NY" ঠিকানায় নিম্নলিখিত উপাদানগুলি রয়েছে: "111" (রাস্তার নম্বর), "8th Avenue" (রুট), "New York" (শহর) এবং "NY" (মার্কিন যুক্তরাষ্ট্রের রাজ্য)।
প্রোগ্রাম্যাটিক্যালি ফর্ম্যাট করা ঠিকানা পার্স করবেন না। পরিবর্তে, আপনাকে ঠিকানার আলাদা আলাদা অংশ ব্যবহার করতে হবে, যা API রেসপন্সে ফর্ম্যাট করা ঠিকানা ফিল্ডের সাথে অন্তর্ভুক্ত থাকে।
address_components[]হল একটি অ্যারে যাতে এই ঠিকানার ক্ষেত্রে প্রযোজ্য আলাদা আলাদা কম্পোনেন্ট থাকে।প্রতিটি ঠিকানার কম্পোনেন্টে সাধারণত নিম্নলিখিত ফিল্ড থাকে:
types[]হল একটি অ্যারে যা ঠিকানা কম্পোনেন্টের ধরন নির্দেশ করে। ঠিকানার উপাদানের জন্য কোনও পরিচিত ধরন না থাকলে, ঠিকানার উপাদানে একটি খালি ধরনের অ্যারে থাকতে পারে। প্রয়োজন অনুযায়ী API নতুন ধরনের ভ্যালু যোগ করতে পারে। আরও তথ্যের জন্য, ঠিকানার ধরন ও ঠিকানার কম্পোনেন্টের ধরন দেখুন।long_nameহল জিওকোডারের মাধ্যমে পাওয়া ঠিকানা কম্পোনেন্টের সম্পূর্ণ টেক্সট বিবরণ বা নাম।short_nameহল ঠিকানা কম্পোনেন্টের জন্য সংক্ষিপ্ত টেক্সট নাম, যদি উপলভ্য থাকে। যেমন, আলাস্কা রাজ্যের জন্য কোনও ঠিকানা উপাদানেরlong_name"আলাস্কা" এবংshort_name"AK" হতে পারে, যেখানে ২-অক্ষরের পোস্টাল সংক্ষিপ্ত রূপ ব্যবহার করা হয়।
address_components[]অ্যারে সম্পর্কে নিম্নলিখিত তথ্য মনে রাখবেন:- ঠিকানার উপাদানের অ্যারেতে
formatted_address-এর চেয়ে বেশি উপাদান থাকতে পারে। - অ্যারেতে ঠিকানা সহ সব রাজনৈতিক এন্টিটি অন্তর্ভুক্ত নাও থাকতে পারে,
formatted_address-এ অন্তর্ভুক্ত এন্টিটিগুলি ছাড়া। নির্দিষ্ট ঠিকানা আছে এমন সব রাজনৈতিক এন্টিটি খুঁজে পেতে, আপনাকে রিভার্স জিওকোডিং ব্যবহার করতে হবে, অনুরোধে প্যারামিটার হিসেবে ঠিকানার অক্ষাংশ/দ্রাঘিমাংশ পাস করতে হবে। - অনুরোধের মধ্যে উত্তরের ফর্ম্যাট একই থাকবে কিনা তার কোনও গ্যারান্টি নেই। বিশেষ করে,
address_components-এর সংখ্যা অনুরোধ করা ঠিকানার উপর নির্ভর করে এবং একই ঠিকানার জন্য সময়ের সাথে সাথে পরিবর্তিত হতে পারে। অ্যারেতে কোনও কম্পোনেন্ট তার পজিশন পরিবর্তন করতে পারে। কম্পোনেন্টের ধরন পরিবর্তন হতে পারে। পরবর্তী উত্তরে কোনও নির্দিষ্ট কম্পোনেন্ট নাও থাকতে পারে।
ঠিকানার ধরন ও ঠিকানার কম্পোনেন্টের ধরন সম্পর্কে আরও তথ্য নিচে দেখুন।
-
partial_match-এর অর্থ হল, জিওকোডার আসল অনুরোধের জন্য সম্পূর্ণ মিল খুঁজে পায়নি, যদিও অনুরোধ করা ঠিকানার অংশবিশেষের সাথে মিল খুঁজে পেয়েছে। আপনি হয়ত আসল অনুরোধে বানান ভুল এবং/অথবা অসম্পূর্ণ ঠিকানা আছে কিনা তা পরীক্ষা করতে চাইবেন।আপনার অনুরোধে উল্লেখ করা এলাকার মধ্যে রাস্তার ঠিকানা না থাকলে, আংশিক মিলের ঘটনা সবচেয়ে বেশি ঘটে। কোনও অনুরোধ একই এলাকার দুই বা তার বেশি লোকেশনের সাথে মিলে গেলে, আংশিক মিলও দেখানো হতে পারে। যেমন, "Hillpar St, Bristol, UK" লিখলে Henry Street এবং Henrietta Street, দুটির জন্যই আংশিক মিল দেখাবে। মনে রাখবেন যে কোনও অনুরোধে যদি কোনও ভুল বানান সহ ঠিকানা থাকে, তাহলে জিওকোডিং পরিষেবা একটি বিকল্প ঠিকানার সাজেশন দিতে পারে। এইভাবে ট্রিগার করা সাজেশনকেও আংশিক ম্যাচ হিসেবে চিহ্নিত করা হবে।
place_idহল কোনও জায়গার অনন্য শনাক্তকারী, যা অন্যান্য Google API-এর সাথে ব্যবহার করা যেতে পারে। যেমন, আপনিplace_idGoogle Places API লাইব্রেরির সাথে ব্যবহার করে স্থানীয় ব্যবসার বিবরণ পেতে পারেন, যেমন ফোন নম্বর, খোলা থাকার সময়, ব্যবহারকারীর রিভিউ এবং আরও অনেক কিছু। প্লেস আইডি ওভারভিউ দেখুন।postcode_localities[]হল একটি অ্যারে যা একটি পিন কোডে থাকা সমস্ত এলাকাকে বোঝায় এবং এটি শুধুমাত্র তখনই উপস্থিত থাকে যখন ফলাফলটি একটি পিন কোড হয় যাতে একাধিক এলাকা থাকে।geometry-এ নিম্নলিখিত তথ্য থাকে:location-এ জিওকোড করা অক্ষাংশ,দ্রাঘিমাংশের মান থাকে। মনে রাখবেন, আমরা এই লোকেশনLatLngঅবজেক্ট হিসেবে রিটার্ন করি, ফর্ম্যাট করা স্ট্রিং হিসেবে নয়।location_typeনির্দিষ্ট লোকেশন সম্পর্কে অতিরিক্ত ডেটা স্টোর করে। নিম্নলিখিত ভ্যালু কাজ করে:ROOFTOPথেকে বোঝা যায় যে, ফিরে আসা ফলাফল একটি সঠিক জিওকোড দেখায়।RANGE_INTERPOLATEDনির্দেশ করে যে ফেরত আসা ফলাফলটি একটি আনুমানিক মান প্রতিফলিত করে (সাধারণত একটি রাস্তায়) দুটি সুনির্দিষ্ট বিন্দুর মধ্যে ইন্টারপোলেট করা হয় (যেমন ইন্টারসেকশন)। ইন্টারপোলেট করা ফলাফল সাধারণত তখনই দেখানো হয় যখন কোনও রাস্তার ঠিকানার জন্য রুফটপ জিওকোড উপলভ্য থাকে না।GEOMETRIC_CENTERএটি দেখায় যে, ফেরত আসা ফলাফলটি হল কোনও ফলাফলের জ্যামিতিক কেন্দ্র, যেমন পলিলাইন (উদাহরণস্বরূপ, রাস্তা) বা পলিগন (অঞ্চল)।APPROXIMATEনির্দেশ করে যে রিটার্ন করা ফলাফল আনুমানিক।
viewport-এ, ফেরত আসা ফলাফলের জন্য সাজেস্ট করা ভিউপোর্ট স্টোর করা হয়।bounds(বিকল্প হিসেবে ফেরত দেওয়া হয়)LatLngBoundsস্টোর করে যা ফেরত দেওয়া ফলাফল সম্পূর্ণভাবে ধারণ করতে পারে। মনে রাখবেন যে এই বাউন্ডগুলি সাজেস্ট করা ভিউপোর্টের সাথে নাও মিলতে পারে। (যেমন, সান ফ্রান্সিসকোর মধ্যে Farallon Islands অন্তর্ভুক্ত, যা টেকনিক্যালি শহরের অংশ, কিন্তু ভিউপোর্টে দেখানো উচিত নয়।)
জিওকোডার ব্রাউজারের পছন্দের ভাষা সেটিংস বা language প্যারামিটার ব্যবহার করে
API জাভাস্ক্রিপ্ট লোড করার সময় নির্দিষ্ট করা ভাষা ব্যবহার করে
ঠিকানা দেখায়। (আরও তথ্যের জন্য,
লোকালাইজেশন দেখুন।)
ঠিকানার ধরন এবং ঠিকানা উপাদানের ধরন
উত্তরে GeocoderResult-এ types[] অ্যারে
ঠিকানার ধরন নির্দেশ করে। ঠিকানার ধরনের উদাহরণের মধ্যে রয়েছে রাস্তার ঠিকানা,
দেশ বা রাজনৈতিক সত্তা। GeocoderAddressComponent-এ
types অ্যারে, ঠিকানার প্রতিটি অংশের ধরন
নির্দেশ করে। উদাহরণের মধ্যে রাস্তার নম্বর বা দেশ অন্তর্ভুক্ত।
ঠিকানার একাধিক ধরন থাকতে পারে। এই ধরনের কন্টেন্টকে 'ট্যাগ' হিসেবে বিবেচনা করা হতে পারে।
যেমন, অনেক শহর political এবং
locality ধরনের সাথে ট্যাগ করা আছে।
নিম্নলিখিত ধরনগুলি কাজ করে এবং ঠিকানা এবং ঠিকানা কম্পোনেন্ট ধরন অ্যারে উভয় ক্ষেত্রেই রিটার্ন করা হয়:
| ঠিকানার ধরন | বিবরণ |
|---|---|
street_address |
রাস্তার সুনির্দিষ্ট ঠিকানা। |
route |
নামযুক্ত রুট (যেমন "US 101")। |
intersection |
একটি প্রধান ইন্টারসেকশন, সাধারণত দুটি প্রধান রাস্তার। |
political |
একটি রাজনৈতিক এন্টিটি। সাধারণত, এই ধরনের জায়গা কোনও সিভিল অ্যাডমিনিস্ট্রেশনের পলিগনকে নির্দেশ করে। |
country |
জাতীয় রাজনৈতিক সত্তা এবং সাধারণত জিওকোডার দ্বারা রিটার্ন করা সর্বোচ্চ অর্ডার টাইপ। |
administrative_area_level_1 |
দেশ স্তরের নিচে প্রথম-ক্রমের নাগরিক সত্তা। মার্কিন যুক্তরাষ্ট্রের মধ্যে, এই প্রশাসনিক লেভেলগুলি হল রাজ্য। সব দেশে এই প্রশাসনিক লেভেল থাকে না। বেশিরভাগ ক্ষেত্রে, administrative_area_level_1 ছোট নাম ISO 3166-2 সাবডিভিশন এবং অন্যান্য ব্যাপকভাবে প্রচারিত তালিকার সাথে ঘনিষ্ঠভাবে মিলবে; তবে এর কোনও গ্যারেন্টি নেই কারণ আমাদের জিওকোডিং ফলাফল বিভিন্ন সিগন্যাল এবং লোকেশন ডেটার উপর ভিত্তি করে তৈরি হয়। |
administrative_area_level_2 |
দেশ স্তরের নিচে দ্বিতীয়-ক্রমের সিভিল এন্টিটি। মার্কিন যুক্তরাষ্ট্রের মধ্যে, এই প্রশাসনিক লেভেলগুলি হল কাউন্টি। সব দেশে এই প্রশাসনিক লেভেল থাকে না। |
administrative_area_level_3 |
দেশ স্তরের নিচে তৃতীয়-ক্রমের সিভিল এন্টিটি। এই ধরনটি একটি ছোট সিভিল ডিভিশনকে নির্দেশ করে। সব দেশে এই প্রশাসনিক লেভেল থাকে না। |
administrative_area_level_4 |
দেশ লেভেলের নিচে চতুর্থ-ক্রমের সিভিল এন্টিটি। এই ধরনটি একটি ছোট সিভিল ডিভিশনকে নির্দেশ করে। সব দেশে এই প্রশাসনিক লেভেল থাকে না। |
administrative_area_level_5 |
দেশ লেভেলের নিচে পঞ্চম-অর্ডার সিভিল এন্টিটি। এই ধরনটি একটি ছোট সিভিল ডিভিশনকে নির্দেশ করে। সব দেশে এই প্রশাসনিক লেভেল থাকে না। |
administrative_area_level_6 |
দেশ লেভেলের নিচে ষষ্ঠ-ক্রমের সিভিল এন্টিটি। এই ধরনটি একটি ছোট সিভিল ডিভিশনকে নির্দেশ করে। সব দেশে এই প্রশাসনিক লেভেল থাকে না। |
administrative_area_level_7 |
দেশ লেভেলের নিচে সপ্তম-অর্ডার সিভিল এন্টিটি। এই ধরনটি একটি ছোট সিভিল ডিভিশনকে নির্দেশ করে। সব দেশে এই প্রশাসনিক লেভেল থাকে না। |
colloquial_area |
এন্টিটির জন্য সাধারণত ব্যবহৃত বিকল্প নাম। |
locality |
একটি অন্তর্ভুক্ত শহর বা টাউন রাজনৈতিক এন্টিটি। |
sublocality |
কোনও লোকালিটির নিচে প্রথম-ক্রমের সিভিল এন্টিটি। কিছু লোকেশনের জন্য, অতিরিক্ত ধরনের মধ্যে একটি পেতে পারেন: sublocality_level_1 থেকে sublocality_level_5। প্রতিটি সাব-লোকালিটি লেভেল হল একটি সিভিল এন্টিটি। বড় সংখ্যা ছোট ভৌগোলিক অঞ্চলকে নির্দেশ করে। |
neighborhood |
নাম দেওয়া আছে এমন একটি প্রতিবেশী। |
premise |
নাম সহ লোকেশন, সাধারণত একটি বিল্ডিং বা সাধারণ নাম সহ বিল্ডিংয়ের সংগ্রহ। |
subpremise |
প্রাঙ্গণ লেভেলের নিচে একটি ঠিকানাযোগ্য এন্টিটি, যেমন একটি অ্যাপার্টমেন্ট, ইউনিট বা স্যুট। |
plus_code |
অক্ষাংশ ও দ্রাঘিমাংশ থেকে প্রাপ্ত, এনকোড করা লোকেশন রেফারেন্স। যেসব জায়গায় রাস্তার ঠিকানা নেই (যেখানে বিল্ডিংয়ের নম্বর বা রাস্তার নাম নেই), সেখানে রাস্তার ঠিকানার পরিবর্তে Plus কোড ব্যবহার করা যেতে পারে। আরও তথ্যের জন্য https://plus.codes দেখুন। |
postal_code |
দেশের মধ্যে ডাকযোগে চিঠি পাঠানোর জন্য ব্যবহৃত পিন কোড। |
natural_feature |
একটি বিশিষ্ট প্রাকৃতিক বৈশিষ্ট্য। |
airport |
একটি বিমানবন্দর। |
park |
নাম উল্লেখ করা পার্ক। |
point_of_interest |
উল্লেখযোগ্য স্থানের নাম। সাধারণত, এই "POI" হল বিশিষ্ট স্থানীয় এন্টিটি যা অন্য কোনও বিভাগে সহজে ফিট করে না, যেমন "এম্পায়ার স্টেট বিল্ডিং" বা "আইফেল টাওয়ার"। |
ধরনের খালি তালিকা থেকে বোঝা যায় যে নির্দিষ্ট ঠিকানা কম্পোনেন্টের জন্য কোনও পরিচিত ধরন নেই (যেমন, ফ্রান্সে লিউ-ডিট)।
উপরে উল্লেখ করা ছাড়াও, ঠিকানার উপাদানে নিচে উল্লেখ করা ধরন অন্তর্ভুক্ত থাকতে পারে।
মনে রাখবেন: এই তালিকা সম্পূর্ণ নয় এবং এটি পরিবর্তন হতে পারে।
উপরে উল্লেখ করা ছাড়াও, ঠিকানার কম্পোনেন্টে নিচে তালিকাভুক্ত ধরন অন্তর্ভুক্ত থাকতে পারে।
| ঠিকানার কম্পোনেন্টের ধরন | বিবরণ |
|---|---|
floor |
বিল্ডিংয়ের ঠিকানায় থাকা ফ্লোর। |
establishment |
সাধারণত এমন একটি জায়গা যা এখনও বিভাগভুক্ত করা হয়নি। |
landmark |
নেভিগেশনে সাহায্য করার জন্য রেফারেন্স হিসেবে ব্যবহার করা হয় এমন কাছাকাছি কোনও জায়গা। |
point_of_interest |
উল্লেখযোগ্য স্থানের নাম। |
parking |
পার্কিং লট বা পার্কিং করার বিল্ডিং। |
post_box |
একটি নির্দিষ্ট পোস্টাল বক্স। |
postal_town |
ভৌগোলিক এলাকার গ্রুপিং, যেমন locality এবং sublocality, কিছু দেশে ডাক ঠিকানার জন্য ব্যবহৃত হয়। |
room |
বিল্ডিংয়ের ঠিকানায় থাকা রুম। |
street_number |
রাস্তার সঠিক নম্বর। |
bus_station, train_station এবং transit_station |
বাস, ট্রেন বা পাবলিক ট্রানজিট স্টপের লোকেশন। |
স্ট্যাটাস কোড
status কোড নিম্নলিখিত মানগুলির মধ্যে যেকোনও একটি দেখাতে পারে:
"OK"-এর অর্থ হল কোনও সমস্যা হয়নি; ঠিকানাটি সফলভাবে পার্স করা হয়েছে এবং অন্তত একটি জিওকোড পাওয়া গেছে।"ZERO_RESULTS"-এর অর্থ হল জিওকোড সফল হয়েছে কিন্তু কোনও ফলাফল পাওয়া যায়নি। জিওকোডার যদি এমন কোনওaddress-এ পাস করা হয় যার কোনও অস্তিত্ব নেই, তাহলে এটি হতে পারে।"OVER_QUERY_LIMIT"থেকে বোঝা যায় যে আপনার কোটা শেষ হয়ে গেছে।"REQUEST_DENIED"-এর অর্থ হল আপনার অনুরোধ প্রত্যাখ্যান করা হয়েছে। ওয়েব পেজকে জিওকোডার ব্যবহার করার অনুমতি দেওয়া হয়নি।"INVALID_REQUEST"সাধারণত ইঙ্গিত করে যে কোয়েরি (address,componentsবাlatlng) নেই।"UNKNOWN_ERROR"-এর অর্থ হল, সার্ভারে সমস্যার কারণে অনুরোধটি প্রসেস করা যায়নি। আপনি আবার চেষ্টা করলে অনুরোধটি সফল হতে পারে।"ERROR"-এর অর্থ হল, অনুরোধের সময়সীমা শেষ হয়ে গেছে অথবা Google সার্ভারের সাথে যোগাযোগ করার সময় কোনও সমস্যা হয়েছে। আপনি আবার চেষ্টা করলে অনুরোধটি সফল হতে পারে।
জিওকোডিংয়ের উদাহরণ
নিম্নলিখিত উদাহরণে কোনও ঠিকানা জিওকোড করা এবং ফেরত পাওয়া অক্ষাংশ ও দ্রাঘিমাংশ ভ্যালুতে মার্কার প্লেস করার পদ্ধতি দেখানো হয়েছে। জিওকোডিং ফলাফল একটি প্রমিস ব্যবহার করে ম্যানেজ করা হয়। সেই লোকেশনে ঠিকানা জিওকোড করতে ম্যাপের যেকোনও জায়গায় ক্লিক করুন।
TypeScript
async function geocode(request: google.maps.GeocoderRequest) { clear(); const { LatLng } = await google.maps.importLibrary('core'); try { const response = await geocoder.geocode(request); const { results } = response; innerMap.setCenter(results[0].geometry.location); marker.position = new LatLng(results[0].geometry.location); mapElement.append(marker); responseDiv.style.display = 'block'; responsePre.innerText = JSON.stringify(response, null, 2); return results; } catch (e) { alert( 'Geocode was not successful for the following reason: ' + String(e) ); } }
জাভাস্ক্রিপ্ট
async function geocode(request) { clear(); const { LatLng } = await google.maps.importLibrary('core'); try { const response = await geocoder.geocode(request); const { results } = response; innerMap.setCenter(results[0].geometry.location); marker.position = new LatLng(results[0].geometry.location); mapElement.append(marker); responseDiv.style.display = 'block'; responsePre.innerText = JSON.stringify(response, null, 2); return results; } catch (e) { alert( 'Geocode was not successful for the following reason: ' + String(e) ); } }
ভিউপোর্ট বায়াসিং
আপনি জিওকোডিং সার্ভিসকে নির্দেশ দিতে পারেন যাতে প্রদত্ত ভিউপোর্টের (বাউন্ডিং বক্স হিসেবে প্রকাশ করা)
মধ্যে ফলাফলকে অগ্রাধিকার দেওয়া হয়। এই ভিউপোর্টের সীমা নির্ধারণ করতে,
GeocoderRequest অবজেক্ট লিটারালের মধ্যে bounds প্যারামিটার
সেট করে আপনি এটি করতে পারেন। মনে রাখবেন যে বায়াসিং শুধুমাত্র
সীমার মধ্যে থাকা ফলাফলকে অগ্রাধিকার দেয়; যদি এই সীমার বাইরে
আরও প্রাসঙ্গিক ফলাফল থাকে, তাহলে সেগুলি অন্তর্ভুক্ত করা হতে পারে।
যেমন, "উইনেটকা"-র জন্য জিওকোড সাধারণত শিকাগোর এই শহরতলিকে দেখায়:
{ "types":["locality","political"], "formatted_address":"Winnetka, IL, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["locality","political"] },{ "long_name":"Illinois", "short_name":"IL", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location":[ -87.7417070, 42.1083080], "location_type":"APPROXIMATE" }, "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q" }
তবে, লস অ্যাঞ্জেলেসের সান ফার্নান্দো ভ্যালির জন্য বাউন্ডিং বক্স নির্ধারণকারী
bounds প্যারামিটার নির্দিষ্ট করলে, এই জিওকোড সেই লোকেশনে "উইনেটকা" নামের আশেপাশের এলাকা দেখায়:
{ "types":["sublocality","political"], "formatted_address":"Winnetka, California, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["sublocality","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_3","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_2","political"] },{ "long_name":"California", "short_name":"CA", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location": [34.213171,-118.571022], "location_type":"APPROXIMATE" }, "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ" }
অঞ্চলের কোড বায়াসিং
আপনি region প্যারামিটার ব্যবহার করে স্পষ্টভাবে কোনও নির্দিষ্ট অঞ্চলের জন্য ফলাফল দেখানোর জন্য
জিওকোডিং পরিষেবা সেট করতে পারেন। এই প্যারামিটার
একটি অঞ্চল কোড নেয়, যা দুই-অক্ষরের (নন-নিউমেরিক) ইউনিকোড
অঞ্চল সাবট্যাগ হিসেবে নির্দিষ্ট করা হয়। এই ট্যাগগুলি সরাসরি পরিচিত ccTLD ("টপ-লেভেল ডোমেন")
দুটি-অক্ষরের মান যেমন "co.uk"-এ "uk" ম্যাপ করে। কিছু ক্ষেত্রে,
region ট্যাগে ISO-3166-1 কোডও কাজ করে, যা কখনও কখনও
ccTLD ভ্যালুর থেকে আলাদা হয় (যেমন, "Great Britain"-এর জন্য "GB")।
region প্যারামিটার ব্যবহার করার সময়:
- শুধুমাত্র একটি দেশ বা অঞ্চল উল্লেখ করুন। একাধিক মান উপেক্ষা করা হয়েছে এবং এর ফলে অনুরোধ বাতিল হতে পারে।
- শুধুমাত্র দুই-অক্ষরের অঞ্চল সাবট্যাগ (Unicode CLDR ফর্ম্যাট) ব্যবহার করুন। অন্যান্য সব ইনপুটের ক্ষেত্রে সমস্যা হবে।
- শুধুমাত্র Google Maps Platform কভারেজের বিবরণ-এ তালিকাভুক্ত দেশ ও অঞ্চলে কাজ করে।
যেসব ডোমেনে মূল Google Maps অ্যাপ্লিকেশন জিওকোডিং অফার করে, সেইসব ডোমেনের জন্য জিওকোডিং অনুরোধ পাঠানো যেতে পারে। মনে রাখবেন যে বায়াসিং শুধুমাত্র নির্দিষ্ট ডোমেনের জন্য ফলাফল পছন্দ করে; এই ডোমেনের বাইরে আরও প্রাসঙ্গিক ফলাফল থাকলে, সেগুলি অন্তর্ভুক্ত করা হতে পারে।
যেমন, "Toledo"-এর জন্য জিওকোড এই ফলাফল দেখায়, কারণ জিওকোডিং পরিষেবার ডিফল্ট ডোমেন মার্কিন যুক্তরাষ্ট্রে সেট করা আছে:
{ "types":["locality","political"], "formatted_address":"Toledo, OH, USA", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Ohio", "short_name":"OH", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw" }
"Toledo"-এর জন্য জিওকোড, যেখানে region ফিল্ড
'es' (স্পেন) হিসেবে সেট করা আছে, সেটি স্প্যানিশ শহরটি দেখাবে:
{ "types":["locality","political"], "formatted_address":"Toledo, España", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Toledo", "short_name":"TO", "types":["administrative_area_level_2","political"] },{ "long_name":"Castilla-La Mancha", "short_name":"CM", "types":["administrative_area_level_1","political"] },{ "long_name":"España", "short_name":"ES", "types":["country","political"] }], "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y" }
কম্পোনেন্ট ফিল্টার করা
আপনি কম্পোনেন্ট ফিল্টার ব্যবহার করে নির্দিষ্ট এলাকায় সীমাবদ্ধ ঠিকানার ফলাফল দেখানোর জন্য
জিওকোডিং পরিষেবা সেট করতে পারবেন।
componentRestrictions প্যারামিটারে ফিল্টার উল্লেখ করুন। ফিল্টার ভ্যালু অন্যান্য জিওকোডিং অনুরোধের মতো বানান সংশোধন এবং আংশিক মিলের একই পদ্ধতি সমর্থন করে।
জিওকোডার শুধুমাত্র সেই ফলাফলগুলি দেখায় যা সব কম্পোনেন্ট ফিল্টারের সাথে মেলে। অর্থাৎ, এটি ফিল্টার স্পেসিফিকেশনকে AND হিসেবে মূল্যায়ন করে, OR হিসেবে নয়।
কম্পোনেন্ট ফিল্টারে নিম্নলিখিত আইটেমের মধ্যে এক বা একাধিক আইটেম থাকে:
routeকোনও রুটের ছোট বা বড় নামের সাথে মেলে।localityটি লোকালিটি ও সাব-লোকালিটি ধরনের সাথে মিলে গেছে।administrativeAreaপ্রশাসনিক এলাকার সবকটি লেভেলের সাথে ম্যাচ করে।postalCodeপিন কোড ও পিন কোড প্রিফিক্সের সাথে ম্যাচ করে।countryকোনও দেশের নাম বা দুই অক্ষরের ISO 3166-1 দেশের কোডের সাথে মেলে। মনে রাখবেন: API দেশ নির্ধারণ করার জন্য ISO স্ট্যান্ডার্ড অনুসরণ করে এবং দেশের সংশ্লিষ্ট ISO কোড ব্যবহার করার সময় ফিল্টারিং সবচেয়ে ভালো কাজ করে।
নিম্নলিখিত উদাহরণে দেখানো হয়েছে যে কীভাবে
componentRestrictions প্যারামিটার ব্যবহার করে
country এবং postalCode অনুযায়ী ফিল্টার করা যায়:
async function codeAddress(request: google.maps.GeocoderRequest) { clear(); geocoder.geocode({ componentRestrictions: { country: 'AU', postalCode: '2000' } }) .then((result) => { const { results } = result; innerMap.setCenter(results[0].geometry.location); let marker = new google.maps.marker.AdvancedMarkerElement({ map: innerMap, position: results[0].geometry.location }); }) .catch((e) => { alert('Geocode was not successful for the following reason: ' + e); }); };
কোনও ফলাফল না থাকলে পূরণ করুন
রিভার্স জিওকোডিংয়ের জন্য, ডিফল্ট হিসেবে status=ZERO_RESULTS-এ প্রমিস ভেঙে যায়। তবে,
এই ক্ষেত্রে plus_code এবং address_descriptor-এর অতিরিক্ত রেসপন্স লেভেল ফিল্ড এখনও
পূরণ করা হতে পারে। fulfillOnZeroResults প্যারামিটারের জন্য true প্রদান করা হলে,
এই ক্ষেত্রে পপুলেট করা হয়। fulfillOnZeroResults প্যারামিটারের জন্য true প্রদান করা হলে,
প্রমিস ভেঙে যায় না এবং এই অতিরিক্ত ফিল্ডগুলি প্রমিস থেকে অ্যাক্সেস করা যায়, যদি সেগুলি উপস্থিত থাকে।
অ্যান্টার্কটিকার অক্ষাংশ/দ্রাঘিমাংশের জন্য এই আচরণের একটি উদাহরণ নিচে দেওয়া হল।
রিভার্স জিওকোডিংয়ের কোনও ফলাফল না থাকলেও, আমরা fulfillOnZeroResults=true সেট করলে
প্রমিজে প্লাস কোড প্রিন্ট করতে পারব।
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(-75.290330, 38.653861); geocoder .geocode({ 'location': latlng, 'fulfillOnZeroResults': true, }) .then((response) => { console.log(response.plus_code); }) .catch((error) => { window.alert(`Error: ${error}`); }); }
ঠিকানার বিবরণ
ঠিকানার বর্ণনাকারীতে অতিরিক্ত তথ্য অন্তর্ভুক্ত থাকে যা ল্যান্ডমার্ক এবং এলাকা ব্যবহার করে কোনও লোকেশন বর্ণনা করতে সাহায্য করে। ফিচারটি এক্সপ্লোর করতে ঠিকানার ডেসক্রিপ্টর ডেমো দেখুন।
extraComputations
প্যারামিটার ব্যবহার করে ঠিকানা বর্ণনাকারী চালু করা যেতে পারে। আপনার উত্তরে ঠিকানা বর্ণনাকারী পেতে জিওকোডিং অনুরোধ
, রিভার্স জিওকোডিং অনুরোধ
অথবা জায়গার জিওকোডিং অনুরোধে
extra_computations=ADDRESS_DESCRIPTORS অন্তর্ভুক্ত করুন।
জায়গার জিওকোডিংয়ের উদাহরণ
নিম্নলিখিত কোয়েরিতে দিল্লির একটি জায়গার ঠিকানা আছে।
function addressDescriptorPlaceIdLookup() { geocoder.geocode({ geocoder.geocode({ 'placeId': 'ChIJyxAX8Bj9DDkRgBfAnBYa66Q', 'extraComputations': ['ADDRESS_DESCRIPTORS'] }, function(results, status) { if (status == 'OK') { console.log(results[0].address_descriptor); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
রিভার্স জিওকোডিংয়ের উদাহরণ
নিম্নলিখিত কোয়েরিতে দিল্লির একটি লোকেশনের অক্ষাংশ/দ্রাঘিমাংশের মান রয়েছে।
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(28.640964,77.235875); geocoder .geocode({ 'location': latlng, 'extraComputations': ["ADDRESS_DESCRIPTORS"], }) .then((response) => { console.log(response.address_descriptor); }) .catch((error) => { window.alert(`Error`); }); }
ঠিকানার বর্ণনাকারীর উদাহরণ
address_descriptor-এর একটি উদাহরণ নিচে দেওয়া হল।
{ "address_descriptor" : { "areas" : [ { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Turkman Gate" }, "place_id" : "ChIJ_7LLvyb9DDkRMKKxP9YyXgs" }, { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Chandni Chowk" }, "place_id" : "ChIJWcXciBr9DDkRUb4dCDykTwI" }, { "containment" : "NEAR", "display_name" : { "language_code" : "en", "text" : "Katar Ganj" }, "place_id" : "ChIJH3cWUyH9DDkRaw-9CjvcRvY" } ], "landmarks" : [ { "display_name" : { "language_code" : "en", "text" : "Delite Cinema" }, "straight_line_distance_meters" : 29.9306755065918, "place_id" : "ChIJLfiYDCT9DDkROoEa7NdupUM", "travel_distance_meters" : 418.7794799804688, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "establishment", "movie_theater", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "YES Bank" }, "straight_line_distance_meters" : 66.83731079101562, "place_id" : "ChIJFYHM3yb9DDkRRKGkZl2mpSQ", "travel_distance_meters" : 489.0340270996094, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "UCO Bank" }, "straight_line_distance_meters" : 25.38849639892578, "place_id" : "ChIJ-c6_wCb9DDkRjIk1LeqRtGM", "travel_distance_meters" : 403.2246398925781, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "atm", "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "Delhi By Cycle Meeting Point" }, "straight_line_distance_meters" : 44.02867126464844, "place_id" : "ChIJNxVfkSb9DDkRJD22l-eGFdM", "travel_distance_meters" : 97.41281890869141, "spatial_relationship" : "AROUND_THE_CORNER", "types" : [ "establishment", "point_of_interest", "tourist_attraction", "travel_agency" ] }, { "display_name" : { "language_code" : "en", "text" : "Axis Bank Branch" }, "straight_line_distance_meters" : 102.3495178222656, "place_id" : "ChIJr3uaDCT9DDkR8roHTVSn1x4", "travel_distance_meters" : 330.8566284179688, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] } ] } }
প্রতিটি address_descriptor অবজেক্টে দুটি অ্যারে আছে: landmarks এবং
areas। landmarks অ্যারেতে সর্বাধিক ৫টি ফলাফল থাকে যা অনুরোধ করা কোঅর্ডিনেটের নৈকট্য, ল্যান্ডমার্কের প্রচলন এবং এর দৃশ্যমানতা বিবেচনা করে
প্রাসঙ্গিকতার ক্রম অনুসারে র্যাঙ্ক করা হয়। প্রতিটি ল্যান্ডমার্ক ফলাফলে নিম্নলিখিত
মান থাকে:
place_idহল ল্যান্ডমার্ক ফলাফলের প্লেস আইডি। প্লেস আইডি এক নজরে দেখুন।display_nameহল ল্যান্ডমার্কের ডিসপ্লে নাম এবং এতেlanguage_codeওtextআছে।straight_line_distance_metersহল ইনপুট কোঅর্ডিনেট ও ল্যান্ডমার্ক ফলাফলের মধ্যে মিটার এককে পয়েন্ট-টু-পয়েন্ট দূরত্ব।travel_distance_metersহল ইনপুট কোঅর্ডিনেট এবং ল্যান্ডমার্ক ফলাফলের মধ্যে রোড নেটওয়ার্ক (রাস্তার বিধিনিষেধ উপেক্ষা করে) ব্যবহার করে ভ্রমণ করা মিটার দূরত্ব।spatial_relationshipহল ইনপুট কোঅর্ডিনেট ও ল্যান্ডমার্ক ফলাফলের মধ্যে আনুমানিক সম্পর্ক:- নিম্নলিখিত কোনওটি প্রযোজ্য না হলে,
"NEAR"হল ডিফল্ট রিলেশনশিপ। "WITHIN"যখন ইনপুট কোঅর্ডিনেট ল্যান্ডমার্কের সাথে যুক্ত স্ট্রাকচারের সীমার মধ্যে থাকে।"BESIDE"যখন ইনপুট কোঅর্ডিনেট সরাসরি ল্যান্ডমার্ক বা ল্যান্ডমার্কের অ্যাক্সেস পয়েন্টের ঠিক পাশে থাকে।"ACROSS_THE_ROAD"যখন ইনপুট কোঅর্ডিনেট রুটের অন্য পাশে ল্যান্ডমার্কের ঠিক বিপরীতে থাকে।"DOWN_THE_ROAD"যখন ইনপুট কোঅর্ডিনেট ল্যান্ডমার্কের মতো একই রুটে থাকে, কিন্তু"BESIDES"বা"ACROSS_THE_ROAD"নয়।"AROUND_THE_CORNER"যখন ইনপুট কোঅর্ডিনেট ল্যান্ডমার্কের সাথে লম্বভাবে থাকা রুটে থাকে (একটি মাত্র বাঁক নেওয়ার অনুমতি থাকে)।"BEHIND"যখন ইনপুট কোঅর্ডিনেট ল্যান্ডমার্কের কাছাকাছি হয়, কিন্তু এর অ্যাক্সেস পয়েন্ট থেকে দূরে হয়।typesহল ল্যান্ডমার্কের জায়গার ধরন।
areas অবজেক্টে সর্বাধিক ৩টি উত্তর থাকে এবং এটি ছোট অঞ্চল, যেমন পাড়া, সাব-লোকালিটি এবং বড় কমপ্লেক্সের
মধ্যে সীমাবদ্ধ থাকে। অনুরোধ করা স্থানাঙ্ক আছে এমন এলাকাগুলি প্রথমে তালিকাভুক্ত করা হয় এবং
ছোট থেকে বড় ক্রমে সাজানো হয়। প্রতিটি areas ফলাফলে নিম্নলিখিত
মান থাকে:
place_idহল এলাকার ফলাফলের প্লেস আইডি। প্লেস আইডি এক নজরে দেখুন।display_nameহল এলাকার ডিসপ্লে নাম এবং এতেlanguage_codeওtextআছে।containmentহল ইনপুট কোঅর্ডিনেট ও এলাকার ফলাফলের মধ্যে আনুমানিক কন্টেনমেন্ট সম্পর্ক:- নিম্নলিখিত কোনওটি প্রযোজ্য না হলে,
"NEAR"হল ডিফল্ট রিলেশনশিপ। - ইনপুট কোঅর্ডিনেট এলাকার কেন্দ্রের কাছাকাছি থাকলে
"WITHIN"। "OUTSKIRTS"যখন ইনপুট কোঅর্ডিনেট এলাকার প্রান্তের কাছাকাছি থাকে।
ঠিকানা বর্ণনাকারী কভারেজ
ভারতের জন্য ঠিকানা বর্ণনাকারী GA-তে রয়েছে। ভারতে ঠিকানা বর্ণনাকারী ব্যবহার করার জন্য কোনও অতিরিক্ত খরচ হয় না এবং ব্যবহার করার খরচ বর্তমান Geocoding (India) Essentials SKU-এর মধ্যে কভার করা হয়।
মতামত
এই ফিচার সব অঞ্চলে উপলভ্য। এটি ভারতের জন্য GA-তে এবং অন্যান্য সমস্ত অঞ্চলের জন্য প্রি-GA এক্সপেরিমেন্টাল লঞ্চ স্টেজে রয়েছে। মতামত জানালে আমরা খুশি হব:
- শুধুমাত্র ভারত অঞ্চলের সাথে সম্পর্কিত সমস্যার জন্য, সহায়তা টিমের সাথে যোগাযোগ করুন।
- এক্সপেরিমেন্টাল রিলিজ সম্পর্কে মতামত জানাতে, আমাদের address-descriptors-feedback@google.com আইডিতে ইমেল করুন।
- আরও তথ্যের জন্য ঠিকানার বর্ণনাকারী কভারেজের বিবরণ দেখুন।
রিভার্স জিওকোডিং (ঠিকানা খোঁজা)
জিওকোডিং বলতে সাধারণত মানুষের-পঠনযোগ্য ঠিকানা ম্যাপের লোকেশনে অনুবাদ করাকে বোঝায়। এর বিপরীত প্রক্রিয়া, অর্থাৎ ম্যাপে কোনও লোকেশনকে মানুষের-পঠনযোগ্য ঠিকানায় পরিবর্তন করার প্রক্রিয়াকে রিভার্স জিওকোডিং বলা হয়।
টেক্সট address দেওয়ার পরিবর্তে, location প্যারামিটারে কমা দিয়ে আলাদা করা
অক্ষাংশ/দ্রাঘিমাংশ জোড়া দিন।
নিম্নলিখিত উদাহরণটি অক্ষাংশ/দ্রাঘিমাংশ মান জিওকোড করে এবং সেই লোকেশনে ম্যাপটি সেন্টার করে, ফর্ম্যাট করা ঠিকানা সহ একটি তথ্য উইন্ডো নিয়ে আসে। লোকেশন জিওকোড করতে ম্যাপের যেকোনও জায়গায় ক্লিক করুন অথবা আপনার নিজস্ব কোঅর্ডিনেট লিখুন।
TypeScript
let marker: google.maps.marker.AdvancedMarkerElement; async function init() { // Request the needed libraries. const [{ InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('geocoding'), google.maps.importLibrary('marker'), ]); // Get the gmp-map element. const mapElement = document.querySelector('gmp-map')!; // Get the inner map. const innerMap = mapElement.innerMap; // Get the latlng input box. const latLngQuery = document.getElementById('latlng') as HTMLInputElement; // Get the submit button. const submitButton = document.getElementById('submit')!; // Set the cursor to crosshair. innerMap.setOptions({ draggableCursor: 'crosshair', zoom: 13, mapTypeControl: false, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); marker.anchorTop = '40px'; const geocoder = new Geocoder(); const infoWindow = new InfoWindow(); // Add a click event listener to the submit button. submitButton.addEventListener('click', () => { void geocodeLatLng(geocoder, innerMap, infoWindow); }); // Add a click event listener to the map. innerMap.addListener('click', (event: google.maps.MapMouseEvent) => { if (event.latLng) { latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`; void geocodeLatLng(geocoder, innerMap, infoWindow); } }); // Make an initial request upon loading. void geocodeLatLng(geocoder, innerMap, infoWindow); } async function geocodeLatLng( geocoder: google.maps.Geocoder, map: google.maps.Map, infoWindow: google.maps.InfoWindow ) { const input = (document.getElementById('latlng') as HTMLInputElement).value; const latlngStr = input.split(',', 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; try { const { results } = await geocoder.geocode({ location: latlng }); if (results[0]) { marker.position = latlng; map.setCenter(latlng); infoWindow.setContent(results[0].formatted_address); infoWindow.open(map, marker); } else { window.alert('No results found'); } } catch (e) { window.alert('Geocoder failed due to: ' + String(e)); } } void init();
জাভাস্ক্রিপ্ট
let marker; async function init() { // Request the needed libraries. const [{ InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('geocoding'), google.maps.importLibrary('marker'), ]); // Get the gmp-map element. const mapElement = document.querySelector('gmp-map'); // Get the inner map. const innerMap = mapElement.innerMap; // Get the latlng input box. const latLngQuery = document.getElementById('latlng'); // Get the submit button. const submitButton = document.getElementById('submit'); // Set the cursor to crosshair. innerMap.setOptions({ draggableCursor: 'crosshair', zoom: 13, mapTypeControl: false, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); marker.anchorTop = '40px'; const geocoder = new Geocoder(); const infoWindow = new InfoWindow(); // Add a click event listener to the submit button. submitButton.addEventListener('click', () => { void geocodeLatLng(geocoder, innerMap, infoWindow); }); // Add a click event listener to the map. innerMap.addListener('click', (event) => { if (event.latLng) { latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`; void geocodeLatLng(geocoder, innerMap, infoWindow); } }); // Make an initial request upon loading. void geocodeLatLng(geocoder, innerMap, infoWindow); } async function geocodeLatLng(geocoder, map, infoWindow) { const input = document.getElementById('latlng').value; const latlngStr = input.split(',', 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; try { const { results } = await geocoder.geocode({ location: latlng }); if (results[0]) { marker.position = latlng; map.setCenter(latlng); infoWindow.setContent(results[0].formatted_address); infoWindow.open(map, marker); } else { window.alert('No results found'); } } catch (e) { window.alert('Geocoder failed due to: ' + String(e)); } } void init();
CSS
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ gmp-map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; font-family: Roboto, sans-serif; } #floating-panel { background-color: #fff; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px; margin: 10px; padding: 10px; font-family: Roboto, sans-serif; font-size: 1rem; } #latlng { width: 100%; font-family: Roboto, sans-serif; font-size: 1rem; margin-bottom: 4px; } #submit { font-size: 1rem; }
HTML
<html>
<head>
<title>Reverse Geocoding</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
<script>
// prettier-ignore
(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
key: "GOOGLE_MAPS_API_KEY"
});
</script>
</head>
<body>
<gmp-map center="0.714224, -73.961452" zoom="8" map-id="DEMO_MAP_ID">
<div id="floating-panel" slot="control-block-start-inline-start">
<p>
Click the map to reverse geocode, or add your own
coordinates.
</p>
<input
id="latlng"
type="text"
value="40.714224, -73.961452" /><br />
<input id="submit" type="button" value="Reverse Geocode" />
</div>
</gmp-map>
</body>
</html>মনে রাখবেন, আগের উদাহরণে আমরা results[0] বেছে নিয়ে প্রথম ফলাফল
দেখিয়েছি। রিভার্স জিওকোডার প্রায়শই একাধিক ফলাফল
দেখায়। জিওকোড করা ঠিকানা শুধু পোস্টাল ঠিকানা নয়, বরং কোনও লোকেশনের
ভৌগোলিক নাম দেওয়ার যেকোনও উপায়। যেমন, শিকাগো শহরের কোনও পয়েন্ট জিওকোড করার সময়, জিওকোড করা পয়েন্টটি রাস্তার ঠিকানা, শহর (শিকাগো), রাজ্য (ইলিনয়) বা দেশ (মার্কিন যুক্তরাষ্ট্র)
হিসেবে লেবেল করা হতে পারে। সবকটিই জিওকোডারের অ্যাড্রেস। রিভার্স জিওকোডার এই সব ফলাফল
ফেরত পাঠায়।
রিভার্স জিওকোডার রাজনৈতিক সত্তা (দেশ, প্রদেশ, শহর ও আশেপাশের এলাকা), রাস্তার ঠিকানা ও পিন কোড ম্যাচ করে।
উপরের কোয়েরি থেকে যেসব ঠিকানার তালিকা পাওয়া যেতে পারে তার একটি উদাহরণ এখানে দেওয়া হল:
results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA" results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA" results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA" results[3].formatted_address: "Brooklyn, NY, USA" results[4].formatted_address: "New York, NY, USA" results[5].formatted_address: "Brooklyn, NY 11211, USA" results[6].formatted_address: "Kings County, NY, USA" results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA" results[8].formatted_address: "New York Metropolitan Area, USA" results[9].formatted_address: "New York, USA"
সবচেয়ে বেশি থেকে সবচেয়ে কম মিলের ক্রমে ঠিকানা দেখানো হয়। সাধারণত,
আরও সঠিক ঠিকানা হল সবচেয়ে বিশিষ্ট ফলাফল, যেমন এই ক্ষেত্রে হয়েছে।
মনে রাখবেন যে আমরা বিভিন্ন ধরনের ঠিকানা দেখাই, সবচেয়ে নির্দিষ্ট রাস্তার ঠিকানা থেকে শুরু করে
কম নির্দিষ্ট রাজনৈতিক এন্টিটি যেমন, প্রতিবেশী, শহর, কাউন্টি, রাজ্য ইত্যাদি। আপনি যদি আরও সাধারণ ঠিকানা
মেলাতে চান, তাহলে results[].types ফিল্ডটি পরীক্ষা করে দেখতে পারেন।
মনে রাখবেন: রিভার্স জিওকোডিং কোনও নিখুঁত বিজ্ঞান নয়। জিওকোডার নির্দিষ্ট সহনশীলতার মধ্যে সবচেয়ে কাছাকাছি ঠিকানাযোগ্য লোকেশন খোঁজার চেষ্টা করবে।
কোনও প্লেস আইডির জন্য ঠিকানা ফিরিয়ে আনা হচ্ছে
প্রদত্ত জায়গা আইডির ঠিকানা খুঁজতে placeId প্রদান করুন। প্লেস
আইডি হল একটি অনন্য শনাক্তকারী যা অন্যান্য Google API-এর সাথে ব্যবহার করা যেতে পারে। যেমন, আপনি Roads API-এর মাধ্যমে ফেরত পাঠানো placeId প্রদান করতে পারেন
যাতে স্ন্যাপ করা পয়েন্টের
অ্যাড্রেস পাওয়া যায়। প্লেস আইডি সম্পর্কে আরও তথ্যের জন্য, প্লেস আইডি ওভারভিউ দেখুন।
আপনি placeId প্রদান করলে, অনুরোধে নিম্নলিখিত ফিল্ডের কোনওটিই
থাকতে পারবে না:
addresslatLnglocationcomponentRestrictions
নিম্নলিখিত উদাহরণটি একটি স্থান আইডি গ্রহণ করে, সংশ্লিষ্ট ঠিকানা খুঁজে পায়, এবং সেই স্থানে মানচিত্রকে কেন্দ্র করে। এছাড়াও, এটি একটি তথ্য উইন্ডো নিয়ে আসে যা প্রাসঙ্গিক জায়গার ফর্ম্যাট করা ঠিকানা দেখায়:
TypeScript
// Initialize the map. async function init(): Promise<void> { const [{ Geocoder }, { InfoWindow }] = await Promise.all([ google.maps.importLibrary('geocoding'), google.maps.importLibrary('maps'), google.maps.importLibrary('marker'), ]); const mapElement = document.querySelector('gmp-map')!; const innerMap = mapElement.innerMap; const geocoder = new Geocoder(); const infoWindow = new InfoWindow(); document.getElementById('submit')!.addEventListener('click', () => { void geocodePlaceId(geocoder, innerMap, infoWindow); }); } // This function is called when the user clicks the UI button. async function geocodePlaceId( geocoder: google.maps.Geocoder, map: google.maps.Map, infoWindow: google.maps.InfoWindow ) { const placeId = (document.getElementById('place-id') as HTMLInputElement) .value; const { AdvancedMarkerElement } = await google.maps.importLibrary('marker'); const { results } = await geocoder.geocode({ placeId }); if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new AdvancedMarkerElement({ map, position: results[0].geometry.location, }); infoWindow.setContent(results[0].formatted_address); infoWindow.open(map, marker); } else { window.alert('No results found'); } } void init();
জাভাস্ক্রিপ্ট
// Initialize the map. async function init() { const [{ Geocoder }, { InfoWindow }] = await Promise.all([ google.maps.importLibrary('geocoding'), google.maps.importLibrary('maps'), google.maps.importLibrary('marker'), ]); const mapElement = document.querySelector('gmp-map'); const innerMap = mapElement.innerMap; const geocoder = new Geocoder(); const infoWindow = new InfoWindow(); document.getElementById('submit').addEventListener('click', () => { void geocodePlaceId(geocoder, innerMap, infoWindow); }); } // This function is called when the user clicks the UI button. async function geocodePlaceId(geocoder, map, infoWindow) { const placeId = document.getElementById('place-id').value; const { AdvancedMarkerElement } = await google.maps.importLibrary('marker'); const { results } = await geocoder.geocode({ placeId }); if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new AdvancedMarkerElement({ map, position: results[0].geometry.location, }); infoWindow.setContent(results[0].formatted_address); infoWindow.open(map, marker); } else { window.alert('No results found'); } } void init();