קואורדינטות מפה ואריחים

בחירת פלטפורמה: Android iOS JavaScript

ה-SDK של מפות Google עבור iOS משתמש במערכות הקואורדינטות הבאות:

  • ערכים של קו רוחב וקו אורך, שמפנים לנקודה לעולם באופן ייחודי. (Google משתמשת ב גיאודטיקה עולמית תקן מערכת WGS84).
  • קואורדינטות עולמיות, שמפנות לנקודה במפה באופן ייחודי.
  • קואורדינטות של Pixel, שמפנות לפיקסל ספציפי במפה רמת זום ספציפית.
  • קואורדינטות של משבצות, שמפנות למשבצת ספציפית במפה רמת זום ספציפית.

קואורדינטות עולמיות

בכל פעם שה-API צריך לתרגם מיקום בעולם למיקום מופעל במפה, המערכת מתרגמת תחילה ערכים של קו רוחב וקו אורך קואורדינטה עולם. ה-API משתמש Mercator תחזית לביצוע התרגום הזה.

לנוחיותכם בעת חישוב קואורדינטות הפיקסלים (ראו בהמשך) אנחנו מניחים שמפה ברמת זום 0 היא אריח יחיד בגודל אריח הבסיס. לאחר מכן אנחנו מגדירים קואורדינטות עולמות ביחס לקואורדינטות של פיקסלים עם מרחק התצוגה ברמה 0, תוך שימוש בהיטל כדי להמיר קווי אורך ורוחב מיקומי פיקסלים באריח הבסיס הזה. הקואורדינטה עולמית הזו היא צף ערך נקודתי שנמדד מהמקור של היטל המפה מיקום ספציפי. שימו לב שמכיוון שהערך הזה הוא ערך של נקודה צפה (floating-point), ייתכן שהוא יהיה מדויק הרבה יותר מהרזולוציה הנוכחית של תמונת המפה שמוצגות. קואורדינטה עולמית לא תלויה ברמת הזום הנוכחית, או במילים אחרות.

קואורדינטות עולמיות במפות Google נמדדות ב-Merchator מקור ההקרנה (הפינה הצפון-מערבית של המפה ב-180 מעלות קו אורך וקו רוחב של כ-85 מעלות) ועלייה כיוון x לכיוון מזרח (ימינה) ועלייה ב- הכיוון y לכיוון דרום (למטה). כי הלחצן הבסיסי של מפות Google של Mercator הוא בגודל 256 x 256 פיקסלים, וניתן להשתמש בו המרחב הקואורדינטות העולמי הוא {0-256}, {0-256}.

שימו לב שלהיטל Mercator יש ערך סופי רוחב לאורך אבל גובה אינסופי עם קו רוחב. התנתקנו תמונות מפת בסיס באמצעות ההיטל של Mercator +/- 85 מעלות כדי להפוך את צורת המפה שמתקבלת לריבוע, דבר שמאפשר לבחור משבצות יותר בקלות. שימו לב שהיטל עשוי ליצור מחוץ לשטח הקואורדינטות שניתן להשתמש בו במפה הבסיסית אם אתם מציבים את גרף ליד הקטבים, לדוגמה.

קואורדינטות של פיקסלים

קואורדינטות של Pixel מתייחסות לפיקסל ספציפי במפה ברמת זום מסוימת, ואילו קואורדינטות עולם משקפות מיקומים מוחלטים תחזית נתונה. הקואורדינטות של הפיקסלים מחושבות לפי נוסחה:

pixelCoordinate = worldCoordinate * 2zoomLevel

מהמשוואה שלמעלה, שימו לב שכל רמת זום הולכת וגדלה גדול פי שניים גם בx וגם בy לקבלת מסלול. לכן, כל רמת זום גבוהה יותר מובילה לרזולוציה של גבוה פי 2 מהרמה הקודמת. לדוגמה, ברמת זום 1, המפה מורכבת מ-4 משבצות בגודל 256x256 פיקסלים, וכתוצאה מכך יש שטח של פיקסלים מ-512x512 פיקסלים. ברמת זום של 19, כל פיקסל של x ו-y ניתן להפנות למפה באמצעות ערך בין 0 ו-256 * 219.

מכיוון שאנחנו מבססים קואורדינטות עולמיות על גודל האריח של המפה, החלק השלם של הקואורדינטה של פיקסל משפיע על זיהוי הפיקסל המדויק באותו מיקום ברמת הזום הנוכחית. שימו לב שעבור רמת זום 0, נקודות הציון של הפיקסלים שוות לקואורדינטות בעולם.

עכשיו יש לנו דרך לציין בצורה מדויקת כל מיקום במפה, בכל אחת מרמות התצוגה. ה-SDK של מפות Google ל-iOS בונה אזור תצוגה בהינתן מרכז רמת הזום של המפה (כ-LatLng) הגודל של רכיב ה-DOM שמכיל מתרגם את התיבה התוחמת הזו לקואורדינטות של פיקסלים. לאחר מכן ה-API קובע מבחינה לוגית, כל אריחי המפה שנמצאים בתוך גבולות הפיקסלים הנתונים. כל אחד מ- קיימת הפניה למשבצות המפה האלה באמצעות קואורדינטות (נקודות ציון) שמפשטות את הצגת המפה של תמונות.

קואורדינטות של משבצות

ה-API לא יכול לטעון את כל תמונות המפה בבת אחת עבור רמות הזום הגבוהות יותר. במקום זאת, ה-API מפרק את התמונות בכל רמת זום לקבוצה של אריחי מפה שמסודרים באופן לוגי מבינה. כשגוללים במפה למיקום חדש, או למיקום חדש רמת הזום, ה-API קובע אילו משבצות צריך. באמצעות קואורדינטות פיקסלים, ומתרגמת את הערכים האלה של משבצות לאחזר. הקואורדינטות של המשבצות מוקצות באמצעות סכמה שמקלה באופן לוגי על ההחלטה איזה אריח מכיל של כל נקודה נתונה.

קטעי המפה במפות Google ממוספרים מאותו המקור כמו זה לפיקסלים. עבור היישום של היטל Mercator, אריח המקור נמצא תמיד בפינה הצפון-מערבית במפה, כאשר ערכי x עולים ממערב ל ערכי מזרח ו-y עולים מצפון לדרום. אריחים נוספו לאינדקס באמצעות קואורדינטות x,y מהמקור הזה. עבור לדוגמה, ברמת זום 2, כשכדור הארץ מחולק ל-16 משבצות, אפשר להפנות לכל משבצת באמצעות צמד x,y ייחודי:

מפת העולם מחולקת לארבע שורות ו-4 עמודות של אריחים.

שימו לב שעל ידי חלוקת הקואורדינטות של הפיקסלים בגודל המשבצת (256) על סמך המספרים השלמים של התוצאה, מפיקים ממנה תוצר לוואי את הקואורדינטה של המשבצת ברמת הזום הנוכחית.

דוגמה

הדוגמה הבאה מציגה קואורדינטות עבור שיקגו, אילינוי: ערכי קו רוחב/אורך, קואורדינטות עולמיות, קואורדינטות פיקסלים ומשבצת של הקואורדינטות. אפשר להשתמש בבקרת הזום כדי לראות את ערכי הקואורדינטות במקומות שונים רמות הזום.

כדי לראות איך הקואורדינטות חושבו, צפייה את הקוד.