ম্যাপ ও টাইল কোঅর্ডিনেট

প্ল্যাটফর্ম বেছে নিন: Android iOS JavaScript

iOS-এর জন্য Maps SDK নিম্নলিখিত স্থানাঙ্ক সিস্টেম ব্যবহার করে:

  • অক্ষাংশ ও দ্রাঘিমাংশের মান, যা পৃথিবীর কোনও একটি নির্দিষ্ট স্থানকে চিহ্নিত করে। Google World Geodetic System WGS84 স্ট্যান্ডার্ড ব্যবহার করে।
  • বিশ্বের স্থানাঙ্ক, যা ম্যাপে অনন্যভাবে একটি পয়েন্টকে রেফারেন্স করে।
  • পিক্সেল কোঅর্ডিনেট, যা নির্দিষ্ট জুম লেভেলে ম্যাপের নির্দিষ্ট পিক্সেলকে রেফারেন্স হিসেবে ব্যবহার করে।
  • টাইল স্থানাঙ্ক, যা নির্দিষ্ট জুম লেভেলে ম্যাপের নির্দিষ্ট টাইলকে রেফারেন্স করে।

বিশ্বের স্থানাঙ্ক

যখনই API-কে পৃথিবীর কোনও লোকেশনকে ম্যাপের কোনও লোকেশনে অনুবাদ করতে হয়, তখন এটি প্রথমে অক্ষাংশ ও দ্রাঘিমাংশের মানকে পৃথিবীর কোঅর্ডিনেটে অনুবাদ করে। এই অনুবাদ করার জন্য API Mercator প্রোজেকশন ব্যবহার করে।

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

Google Maps-এ বিশ্ব কোঅর্ডিনেট মারকেটর প্রজেকশনের উৎস (১৮০ ডিগ্রি দ্রাঘিমাংশ এবং প্রায় ৮৫ ডিগ্রি অক্ষাংশে ম্যাপের উত্তর-পশ্চিম কোণ) থেকে পরিমাপ করা হয় এবং পূর্ব (ডান) দিকে x ডিরেকশনে এবং দক্ষিণ (নিচে) দিকে y ডিরেকশনে বাড়ে। যেহেতু বেসিক মারকেটর Google Maps টাইল ২৫৬ x ২৫৬ পিক্সেল, তাই ব্যবহারযোগ্য ওয়ার্ল্ড কোঅর্ডিনেট স্পেস হল {0-256}, {0-256}।

মনে রাখবেন যে মারকেটর অভিক্ষেপের দ্রাঘিমাংশ বরাবর একটি সসীম প্রস্থ আছে কিন্তু অক্ষাংশ বরাবর একটি অসীম উচ্চতা আছে। আমরা মার্কেটর প্রজেকশন ব্যবহার করে বেস ম্যাপের ছবি প্রায় +/- ৮৫ ডিগ্রিতে কাট-অফ করি যাতে ম্যাপের আকার বর্গাকার হয়, এর ফলে টাইল বেছে নেওয়ার লজিক আরও সহজ হয়। মনে রাখবেন যে, আপনি যদি মেরুর খুব কাছাকাছি প্লট করেন, তাহলে প্রোজেকশন বেস ম্যাপের ব্যবহারযোগ্য কোঅর্ডিনেট স্পেসের বাইরে ওয়ার্ল্ড কোঅর্ডিনেট তৈরি করতে পারে।

পিক্সেল কোঅর্ডিনেট

পিক্সেল কোঅর্ডিনেট নির্দিষ্ট জুম লেভেলে ম্যাপের নির্দিষ্ট পিক্সেলকে রেফার করে, যেখানে ওয়ার্ল্ড কোঅর্ডিনেট প্রদত্ত প্রোজেকশনে সম্পূর্ণ লোকেশনকে প্রতিফলিত করে। পিক্সেল কোঅর্ডিনেট নিম্নলিখিত ফর্মুলা ব্যবহার করে গণনা করা হয়:

pixelCoordinate = worldCoordinate * 2zoomLevel

উপরের সমীকরণ থেকে লক্ষ্য করুন যে, জুম লেভেল যত বাড়বে, x এবং y উভয় দিকেই তা দ্বিগুণ বড় হবে। তাই, প্রতিটি উচ্চতর জুম লেভেলের রেজোলিউশন আগের লেভেলের চেয়ে চার গুণ বেশি হয়। যেমন, জুম লেভেল ১-এ, ম্যাপে ৪টি ২৫৬x২৫৬ পিক্সেল টাইল থাকে, যার ফলে পিক্সেল স্পেস ৫১২x৫১২ হয়। জুম লেভেল ১৯-এ, ম্যাপের প্রতিটি x এবং y পিক্সেল 0 এবং 256 * 219-এর মধ্যে কোনও ভ্যালু ব্যবহার করে রেফারেন্স করা যেতে পারে।

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

এই কোঅর্ডিনেট সিস্টেম ম্যাপের প্রতিটি লোকেশন, প্রতিটি জুম লেভেলে সঠিকভাবে চিহ্নিত করে। iOS-এর জন্য Maps SDK জুম লেভেল, LatLng হিসেবে ম্যাপের কেন্দ্র এবং DOM এলিমেন্টের সাইজ অনুযায়ী ভিউপোর্ট তৈরি করে এবং এই বাউন্ডিং বক্সকে পিক্সেল কোঅর্ডিনেটে অনুবাদ করে। API তারপর লজিক্যালি প্রদত্ত পিক্সেল সীমার মধ্যে থাকা সমস্ত ম্যাপ টাইল নির্ধারণ করে। আপনি টাইল স্থানাঙ্ক ব্যবহার করে এইসব ম্যাপ টাইলের প্রত্যেকটি রেফারেন্স করেন, যা ম্যাপের ছবি দেখানোকে অনেক সহজ করে তোলে।

টাইল স্থানাঙ্ক

আরও বেশি জুম লেভেলের জন্য API একবারে সব ম্যাপের ছবি লোড করতে পারে না। পরিবর্তে, এটি প্রতিটি জুম লেভেলে ছবিকে ম্যাপ টাইলসের একটি সেটে বিভক্ত করে, যা যৌক্তিকভাবে এমন একটি ক্রমে সাজানো হয় যা আপনার অ্যাপ্লিকেশন ব্যবহার করতে পারে। ম্যাপ নতুন লোকেশনে বা নতুন জুম লেভেলে স্ক্রল করলে, API পিক্সেল কোঅর্ডিনেট ব্যবহার করে নির্ধারণ করে যে কোন টাইল প্রয়োজন এবং তারপরে সেইসব ভ্যালু টাইলসের সেটে অনুবাদ করে যাতে সেগুলি ফিরিয়ে আনা যায়। এটি একটি স্কিম ব্যবহার করে এই টাইল স্থানাঙ্কগুলি অ্যাসাইন করে যা যেকোনও প্রদত্ত পয়েন্টের জন্য কোন টাইলে ছবি আছে তা নির্ধারণ করা সহজ করে তোলে।

Google Maps-এ টাইলগুলি পিক্সেলের মতো একই উৎস থেকে নম্বর করা হয়। Google-এর Mercator প্রোজেকশন প্রয়োগের জন্য, অরিজিন টাইল সবসময় ম্যাপের উত্তর-পশ্চিম কোণে থাকে, যেখানে x-এর মান পশ্চিম থেকে পূর্ব দিকে এবং y-এর মান উত্তর থেকে দক্ষিণ দিকে বাড়ে। টাইলস সেই উৎস থেকে x,y কোঅর্ডিনেট ব্যবহার করে ইন্ডেক্স করা হয়। যেমন, জুম লেভেল ২-এ, যখন পৃথিবীকে ১৬টি টাইলসে ভাগ করা হয়, তখন প্রতিটি টাইলসকে একটি অনন্য x,y পেয়ার দ্বারা রেফারেন্স করা যেতে পারে:

চারটি সারি ও চারটি কলামের টাইলসে বিভক্ত পৃথিবীর ম্যাপ।

মনে রাখবেন, পিক্সেল কোঅর্ডিনেটকে টাইল সাইজ (২৫৬) দিয়ে ভাগ করে এবং ফলাফলের পূর্ণসংখ্যা অংশটি নিয়ে, আপনি বর্তমান জুম লেভেলে টাইল কোঅর্ডিনেটকে বাই-প্রোডাক্ট হিসেবে তৈরি করেন।

উদাহরণ

নিচের উদাহরণে শিকাগো, ইলিনয়ের কোঅর্ডিনেট দেখানো হয়েছে: অক্ষাংশ/দ্রাঘিমাংশ মান, ওয়ার্ল্ড কোঅর্ডিনেট, পিক্সেল কোঅর্ডিনেট এবং টাইল কোঅর্ডিনেট। বিভিন্ন জুম লেভেলে কোঅর্ডিনেট ভ্যালু দেখতে জুম কন্ট্রোল ব্যবহার করুন।

কোঅর্ডিনেট কীভাবে গণনা করা হয়েছে তা দেখতে, কোড দেখুন।