تستخدم Google Maps JavaScript API أنظمة الإحداثيات التالية:
- قيم خطوط الطول والعرض التي تشير إلى نقطة على سطح الأرض بشكل فريد (تستخدم Google معيار World Geodetic System WGS84).
- الإحداثيات العالمية التي تشير إلى نقطة على الخريطة بشكل فريد
- إحداثيات البكسل، التي تشير إلى بكسل معيّن على الخريطة عند مستوى تكبير/تصغير معيّن
- إحداثيات المربّع، التي تشير إلى مربّع معيّن على الخريطة عند مستوى تكبير أو تصغير معيّن
إحداثيات العالم
عندما تحتاج واجهة برمجة التطبيقات إلى ترجمة موقع جغرافي في العالم إلى موقع جغرافي على خريطة، فإنّها تترجم أولاً قيم خط العرض وخط الطول إلى إحداثيات على مستوى العالم. تستخدِم واجهة برمجة التطبيقات إسقاط Mercator لتنفيذ هذه العملية.
لتسهيل احتساب إحداثيات البكسل (راجِع المعلومات أدناه)، نفترض أنّ الخريطة التي تم تكبيرها إلى المستوى 0 هي مربّع واحد بحجم المربّع الأساسي. بعد ذلك، نحدّد إحداثيات الكرة الأرضية بالنسبة إلى إحداثيات البكسل عند مستوى التكبير 0، باستخدام الإسقاط لتحويل خطوط العرض وخطوط الطول إلى مواضع البكسل على مربّع القاعدة هذا. هذه الإحداثيات العالمية هي قيمة نقطة عائمة يتم قياسها من نقطة منشأ إسقاط الخريطة إلى الموقع الجغرافي المحدّد. يُرجى العِلم أنّ هذه القيمة هي قيمة نقطية عائمة، وقد تكون أكثر دقة بكثير من درجة الدقة الحالية لصورة الخريطة المعروضة. بعبارة أخرى، تكون الإحداثيات الجغرافية مستقلة عن مستوى التكبير/التصغير الحالي.
يتم قياس إحداثيات العالم في "خرائط Google" من نقطة منشأ إسقاط Mercator (الركن الشمالي الغربي من الخريطة عند خط طول 180 درجة
وخط عرض 85 درجة تقريبًا) وتزداد في
اتجاه x
باتجاه الشرق (على اليمين) وتزداد في
اتجاه y
باتجاه الجنوب (أسفل الصفحة). بما أنّ
شريحة Mercator الأساسية في "خرائط Google" هي 256 x 256 بكسل، فإنّ
المساحة القابلة للاستخدام لتنسيق الإحداثيات الجغرافية هي {0-256}, {0-256}
.
يُرجى العِلم أنّ إسقاط Mercator له عرض محدود طوليًا ولكن ارتفاع غير محدود على خطوط العرض. نقطع صور الخريطة الأساسية باستخدام إسقاط Mercator عند حوالى 85 درجة +/- لجعل شكل الخريطة الناتج مربّعًا، ما يتيح منطقًا أسهل لاختيار المربّعات. يُرجى العِلم أنّ الإسقاط قد ينتج عنه إحداثيات للعالم خارج مساحة الإحداثيات القابلة للاستخدام في الخريطة الأساسية إذا كنت ترسم بالقرب من القطبين مثلاً.
إحداثيات البكسل
تشير إحداثيات البكسل إلى بكسل معيّن على الخريطة عند مستوى تكبير/تصغير معيّن، في حين تعكس إحداثيات العالم المواقع الجغرافية المطلقة على إسقاط معيّن. يتم احتساب إحداثيات وحدة البكسل باستخدام الصيغة التالية:
pixelCoordinate = worldCoordinate * 2zoomLevel
من المعادلة أعلاه، يُرجى العِلم أنّ كل مستوى تكبير متزايد
يكون أكبر مرتين في كلا الاتجاهين x
وy
. وبالتالي، يؤدي كل مستوى تكبير أعلى إلى زيادة الدقة بمقدار أربعة
أضعاف المستوى السابق. على سبيل المثال، عند مستوى التكبير 1، تتكون الخارطة من 4 مربعات بحجم 256 × 256 بكسل، ما يؤدي إلى مساحة بكسل تتراوح بين 512 × 512. عند مستوى التكبير 19، يمكن الإشارة إلى كل بكسل x
وy
على الخريطة باستخدام قيمة تتراوح بين
0 و256 * 219.
وبما أنّنا أسسنا إحداثيات العالم على حجم مربّع الخريطة، فإنّ الجزء الصحيح من إحداثيات بكسل يؤدي إلى تحديد بكسل تحديدًا في هذا الموقع الجغرافي في مستوى التكبير/التصغير الحالي. يُرجى العِلم أنّه عند مستوى التكبير 0، تكون إحداثيات بكسل مساوية لإحداثيات العالم.
لدينا الآن طريقة للإشارة بدقة إلى كل موقع جغرافي على الخريطة،
في كل مستوى تكبير/تصغير. تُنشئ واجهة برمجة التطبيقات Maps JavaScript API إطار عرض
استنادًا إلى مركز مستوى التكبير في الخريطة (بالتنسيق LatLng
)
وحجم عنصر DOM الذي يحتوي على الإطار،
وتترجِم هذا المربّع الحدودي إلى إحداثيات بكسل. بعد ذلك، تحدِّد واجهة برمجة التطبيقات
منطقيًا جميع مربعات الخرائط التي تقع ضمن حدود البكسل المحدَّدة. تتم الإشارة إلى كلّ
بطاقة من بطاقات الخريطة باستخدام
إحداثيات البطاقة التي تسهّل بشكل كبير عرض صور
الخرائط.
إحداثيات المربّعات
لا يمكن لواجهة برمجة التطبيقات تحميل كل صور الخريطة في آنٍ واحد لمستويات التكبير/التصغير الأعلى. بدلاً من ذلك، تقسم واجهة برمجة التطبيقات الصور في كل مستوى تكبير إلى مجموعة من شرائح الخريطة، والتي يتم ترتيبها منطقيًا بترتيب يفهمه التطبيق. عند الانتقال إلى موقع جديد على الخريطة أو إلى مستوى magnification (تكبير/تصغير) جديد، تحدِّد واجهة برمجة التطبيقات المربّعات المطلوبة باستخدام إحداثيات البكسل، وتحوِّل هذه القيم إلى مجموعة من المربّعات لاستردادها. يتم تحديد إحداثيات المربّعات هذه باستخدام مخطّط يسهّل منطقيًا تحديد المربّع الذي يحتوي على الصور لأي نقطة معيّنة.
يتم ترقيم المربّعات في "خرائط Google" من المصدر نفسه المستخدَم
للوحدات البكسل. بالنسبة إلى طريقة Google في عرض الإسقاط Mercator، يكون المربّع
الأصلي دائمًا في الزاوية الشمالية الغربية
من الخريطة، مع زيادة قيم x
من الغرب إلى الشرق وزيادة قيم y
من الشمال إلى الجنوب. تتم فهرسة المربّعات
باستخدام إحداثيات x,y
من هذا المصدر. على سبيل المثال، عند مستوى التكبير 2، عندما يتم تقسيم الأرض إلى 16 مربّعًا،
يمكن الإشارة إلى كل مربّع باستخدام زوج x,y
فريد:
يُرجى العِلم أنّه من خلال قسمة إحداثيات البكسل على حجم المربّع (256) و أخذ الأجزاء الصحيحة من النتيجة، يمكنك الحصول على إحداثيات المربّع كنتيجة ثانوية عند مستوى التكبير/التصغير الحالي.
مثال
يعرض المثال التالي إحداثيات شيكاغو، إلينوي: قيم خطوط العرض/الطول، وإحداثيات العالم، وإحداثيات البكسل، وإحداثيات الشبكة. استخدِم شريط التحكّم في التكبير/التصغير للاطّلاع على قيم التنسيقات بمستويات magnification مختلفة.
للاطّلاع على كيفية احتساب الإحداثيات، اطّلِع على الرمز.