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

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

‫Maps JavaScript API از سیستم‌های مختصات زیر استفاده می‌کند:

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

مختصات جهانی

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

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

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

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

مختصات پیکسل

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

pixelCoordinate = worldCoordinate * 2zoomLevel

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

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

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

مختصات کاشی

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

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

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

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

مثال

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

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