مختصات نقشه و کاشی

انتخاب پلاتفرم: Android iOS JavaScript

«کیت توسعه نرم‌افزار Google Maps برای Android» از سیستم‌های مختصات زیر استفاده می‌کند:

  • مقادیر طول و عرض جغرافیایی که به‌طور منحصربه‌فرد به نقطه‌ای در جهان اشاره می‌کند. ‫Google از استاندارد سیستم ژئودتیک جهانی WGS84 استفاده می‌کند.
  • مختصات جهانی که به‌طور منحصربه‌فرد به نقطه‌ای در نقشه ارجاع می‌دهد.
  • مختصات پیکسل که به پیکسل خاصی در نقشه در سطح بزرگ‌نمایی خاصی ارجاع می‌دهد.
  • مختصات کاشی که به کاشی خاصی در نقشه در سطح بزرگ‌نمایی خاصی ارجاع می‌دهد.

مختصات جهانی

هرگاه «میانای برنامه‌سازی کاربردی» نیاز داشته باشد مکانی در جهان را به مکانی در نقشه ترجمه کند، ابتدا مقادیر طول و عرض جغرافیایی را به مختصات جهانی ترجمه می‌کند. این API از بروجرد مرکاتوربرای انجام این تبدیل استفاده می‌کند.

برای راحتی در محاسبه مختصات پیکسل (در زیر ببینید) فرض می‌کنیم نقشه در سطح بزرگ‌نمایی ۰ یک کاشی واحد با اندازه کاشی پایه است. سپس مختصات جهانی را نسبت به مختصات پیکسل در سطح بزرگ‌نمایی ۰ تعریف می‌کنیم و از طرح‌ریزی برای تبدیل عرض و طول جغرافیایی به موقعیت‌های پیکسل در این کاشی پایه استفاده می‌کنیم. این مختصات جهانی مقدار نقطه‌ای شناوری است که از مبدأ طرح‌ریزی نقشه تا مکان خاص اندازه‌گیری می‌شود. توجه داشته باشید که چون این مقدار یک مقدار ممیز شناور است، ممکن است بسیار دقیق‌تر از وضوح کنونی تصویر نقشه نشان‌داده‌شده باشد. به‌عبارت دیگر، مختصات جهانی مستقل از سطح بزرگ‌نمایی کنونی است.

مختصات جهانی در Google Maps از مبدأ تصویرسازی مرکاتور (گوشه شمال غربی نقشه در طول جغرافیایی ۱۸۰ درجه و عرض جغرافیایی تقریباً ۸۵ درجه) اندازه‌گیری می‌شود و در جهت x به‌سمت شرق (راست) و در جهت y به‌سمت جنوب (پایین) افزایش می‌یابد. چون کاشی پایه Mercator در Google Maps‏ ۲۵۶ × ۲۵۶ پیکسل است، فضای مختصات جهانی قابل‌استفاده {0-256}, {0-256} است.

توجه داشته باشید که یک تصویرسازی مرکاتور دارای عرض محدود در طول و ارتفاع نامحدود در عرض است. تصاویر نقشه پایه را بااستفاده از تصویرسازی مرکاتور در حدود ۸۵ درجه برش می‌دهیم تا شکل نقشه حاصل مربعی شود که منطق انتخاب کاشی را آسان‌تر می‌کند. توجه داشته باشید که اگر برای مثال بسیار نزدیک به قطب‌ها طرح‌ریزی کنید، یک تصویر ممکن است مختصات جهانی خارج از فضای مختصات قابل‌استفاده نقشه پایه تولید کند.

مختصات پیکسل

مختصات پیکسل به پیکسل خاصی در نقشه در سطح بزرگ‌نمایی خاصی ارجاع می‌دهد، درحالی‌که مختصات جهانی مکان‌های مطلق را در طرحی معین منعکس می‌کند. مختصات پیکسل بااستفاده از فرمول زیر محاسبه می‌شود: فرمول:

pixelCoordinate = worldCoordinate * 2zoomLevel

از معادله بالا، توجه داشته باشید که هر سطح بزرگ‌نمایی افزایشی در هر دو جهت x و y دو برابر بزرگ‌تر است. بنابراین، هر سطح بزرگ‌نمایی بالاتر منجر به وضوحی چهار برابر بالاتر از سطح قبلی می‌شود. برای مثال، در سطح بزرگ‌نمایی ۱، نقشه از ۴ کاشی ۲۵۶x۲۵۶ پیکسلی تشکیل شده است که منجر به فضای پیکسلی از ۵۱۲x۵۱۲ می‌شود. در سطح بزرگ‌نمایی ۱۹، هر x و y پیکسل در نقشه را می‌توان بااستفاده از مقداری بین ۰ و ۲۵۶ * ۲۱۹ ارجاع داد.

ازآنجایی‌که مختصات جهانی را براساس اندازه کاشی نقشه تعیین کردیم، بخش صحیح مختصات پیکسل تأثیر شناسایی پیکسل دقیق در آن مکان در سطح بزرگ‌نمایی کنونی را دارد. توجه داشته باشید که برای سطح بزرگ‌نمایی ۰، مختصات پیکسل با مختصات جهان برابر است.

این سیستم‌های مختصات هر مکان را در نقشه، در هر سطح بزرگ‌نمایی، به‌دقت نشان می‌دهند. «کیت توسعه نرم‌افزار Google Maps برای Android» براساس سطح بزرگ‌نمایی، مرکز نقشه به‌عنوان LatLng، و اندازه عنصر DOM دربرگیرنده، دیدگاه را می‌سازد و این چارگوش محدودکننده را به مختصات پیکسل ترجمه می‌کند. سپس این API به‌صورت منطقی همه کاشی‌های نقشه را که در محدوده پیکسل داده‌شده قرار دارند تعیین می‌کند. بااستفاده از مختصات کاشی، به هریک از این کاشی‌های نقشه ارجاع می‌دهید که نمایش تصاویر نقشه را بسیار ساده می‌کند.

مختصات کاشی

«میانای برنامه‌سازی کاربردی» نمی‌تواند همه تصاویر نقشه را به‌طور هم‌زمان برای سطوح بزرگ‌نمایی بالاتر بار کند. درعوض، تصاویر را در هر سطح بزرگ‌نمایی به مجموعه‌ای از کاشی‌های نقشه تقسیم می‌کند که به‌صورت منطقی در ترتیبی که برنامه شما می‌تواند استفاده کند، چیده شده‌اند. وقتی نقشه به مکان جدید یا سطح بزرگ‌نمایی جدیدی پیمایش می‌شود، میانای برنامه‌سازی کاربردی بااستفاده از مختصات پیکسل تعیین می‌کند به کدام کاشی‌ها نیاز دارد، و سپس آن مقادیر را به مجموعه‌ای از کاشی‌ها برای بازیابی ترجمه می‌کند. این مختصات کاشی را بااستفاده از طرحی اختصاص می‌دهد که تعیین می‌کند کدام کاشی حاوی تصاویر برای هر نقطه معینی است.

قطعه‌های Google Maps از همان مبدأ پیکسل‌ها شماره‌گذاری می‌شوند. برای پیاده‌سازی Google از تصویرسازی مرکاتور، کاشی مبدأ همیشه در گوشه شمال‌غربی نقشه قرار دارد، با مقادیر x که از غرب به شرق افزایش می‌یابد و مقادیر y که از شمال به جنوب افزایش می‌یابد. کاشی‌ها بااستفاده از مختصات x,y از آن مبدأ فهرست‌بندی می‌شوند. برای مثال، در سطح بزرگ‌نمایی ۲، وقتی زمین به ۱۶ کاشی تقسیم می‌شود، هر کاشی می‌تواند با یک جفت x,y منحصربه‌فرد ارجاع داده شود:

نقشه جهان که به چهار ردیف و چهار ستون کاشی تقسیم شده است.

توجه داشته باشید که با تقسیم مختصات پیکسل بر اندازه کاشی (۲۵۶) و درنظر گرفتن بخش‌های صحیح نتیجه، مختصات کاشی را در سطح بزرگ‌نمایی فعلی به‌عنوان محصول جانبی تولید می‌کنید.

مثال

مثال زیر مختصات شیکاگو، ایلینوی را نمایش می‌دهد: مقادیر عرض/طول جغرافیایی، مختصات جهانی، مختصات پیکسل، و مختصات کاشی. از کنترل بزرگ‌نمایی برای دیدن مقادیر مختصات در سطوح مختلف بزرگ‌نمایی استفاده کنید.

برای دیدن نحوه محاسبه مختصات، کد را مشاهده کنید.