إحداثيات الخريطة والتقسيم

اختيار نظام أساسي: Android iOS JavaScript

تستخدم واجهة برمجة تطبيقات جافا سكريبت للخرائط أنظمة الإحداثيات التالية:

  • قيم خطوط الطول والعرض، التي تشير إلى نقطة في العالم بشكل فريد. (تستخدم Google معيار World Geodtic System WGS84).
  • إحداثيات العالم، التي تشير إلى نقطة على الخريطة بشكل فريد.
  • إحداثيات البكسل التي تشير إلى وحدة بكسل معيّنة على الخريطة بمستوى تكبير/تصغير معيّن.
  • إحداثيات المربعات التي تشير إلى مربع معين على الخريطة بمستوى تكبير/تصغير محدد.

إحداثيات العالم

عندما تحتاج واجهة برمجة التطبيقات إلى ترجمة موقع جغرافي في العالم إلى موقع جغرافي على خريطة، تُحوِّل هذه السياسة أولاً قيم خطوط الطول والعرض إلى إحداثيات عالمية. تستخدم واجهة برمجة التطبيقات إسقاط Merrcator لتنفيذ هذه الترجمة.

لتوفير الراحة في حساب إحداثيات البكسل (انظر أدناه)، نفترض أن الخريطة في مستوى التكبير/التصغير 0 هي جزء واحد من حجم المربع الأساسي. بعد ذلك، نحدّد إحداثيات العالم بالنسبة إلى إحداثيات البكسل على المستوى تكبير/تصغير 0، باستخدام الإسقاط لتحويل خطوط الطول والعرض إلى مواضع البكسل على هذا المربع الأساسي. إحداثيّ العالم هذا عبارة عن قيمة نقطة عائمة تُقاس من أصل إسقاط الخريطة إلى الموقع الجغرافي المحدّد. بما أنّ هذه القيمة هي قيمة نقطة عائمة، قد تكون أكثر دقة بكثير من درجة الدقة الحالية لصورة الخريطة المعروضة. إحداثيات العالم مستقلة عن مستوى التكبير/التصغير الحالي، بمعنى آخر.

يتم قياس الإحداثيات العالمية في "خرائط Google" من أصل إسقاط مركاتور (الركن الشمالي الغربي للخريطة على خط طول 180 وخط عرض 85 درجة تقريبًا) وتزيد في اتجاه x باتجاه الشرق (على اليمين) وتزيد في اتجاه y باتجاه الجنوب (لأسفل). بما أنّ مربّع "خرائط Google" الأساسي بحجم 256 × 256 بكسل، تكون مساحة الإحداثيات العالمية القابلة للاستخدام هي {0-256}, {0-256}.

لاحظ أن إسقاط ماركاتور يتميز بعرض محدود طوليًا ولكن بطول غير محدد مع خط العرض. نقطع صور الخريطة الأساسية باستخدام إسقاط ماركاتور عند تقريبًا +/- 85 درجة لمربع الشكل الناتج، مما يجعل اختيار المنطق أكثر سهولة. وتجدر الإشارة إلى أن الإسقاط قد ينتج عنه إحداثيات للعالم خارج مساحة الإحداثي القابلة للاستخدام للخريطة الأساسية، إذا رسمت موقعًا بالقرب من الأعمدة مثلاً.

إحداثيات البكسل

تشير إحداثيات Pixel إلى بكسل معيّن على الخريطة بمستوى تكبير محدّد، بينما تعكس إحداثيات العالم مواقع مطلقة على إسقاط محدّد. يتم احتساب إحداثيات البكسل باستخدام الصيغة التالية:

pixelCoordinate = worldCoordinate * 2zoomLevel

من المعادلة أعلاه، لاحظ أن كل مستوى متزايد من التكبير أو التصغير يزيد بمقدار الضِعف في كلا اتجاهَي x وy. لذلك، يؤدي كل مستوى تكبير/تصغير أعلى إلى درجة دقة أعلى بأربعة أضعاف من المستوى السابق. على سبيل المثال، في مستوى التكبير/التصغير 1، تتكون الخريطة من 450x256 بكسل من المربّعات، مما يؤدي إلى وجود مسافة بكسل من 512x512. في مستوى التكبير/التصغير 19، يمكن الإشارة إلى كل من x وy بكسل على الخريطة باستخدام قيمة بين 0 و256 * 219.

وبما أنّنا نعتمد على إحداثيات العالم على حجم مربّع الخريطة، يؤثّر جزء العدد الصحيح للإحداثيات بوحدات البكسل على تحديد البكسل بدقة في ذلك الموقع الجغرافي على مستوى التكبير أو التصغير الحالي. ويُرجى ملاحظة أنه بالنسبة إلى مستوى التكبير أو التصغير 0، تكون إحداثيات البكسل تساوي الإحداثيات على مستوى العالم.

تتوفّر الآن طريقة للإشارة بدقة إلى كل موقع جغرافي على الخريطة، في كل مستوى من مستويات التكبير أو التصغير. تنشئ واجهة برمجة تطبيقات JavaScript للخرائط إطار عرض بالنظر إلى مركز مستوى التكبير/التصغير للخريطة (باعتباره LatLng) وحجم عنصر DOM الذي يحتوي عليه، وتترجم مربع الإحاطة هذا إلى إحداثيات البكسل. بعد ذلك، تحدّد واجهة برمجة التطبيقات بشكلٍ منطقي جميع مربعات الخرائط التي تقع داخل حدود وحدات البكسل المحدّدة. وتتم الإشارة إلى كل مربع من مربعات الخرائط هذه باستخدام إحداثيات المربعات التي تبسط إلى حد كبير عرض صور الخريطة.

إحداثيات المربعات

لا يمكن لواجهة برمجة التطبيقات تحميل جميع صور الخريطة مرة واحدة للحصول على مستويات أعلى من التكبير أو التصغير. وبدلاً من ذلك، تقسّم واجهة برمجة التطبيقات الصور عند كل مستوى من مستويات التكبير أو التصغير إلى مجموعة من مربعات الخرائط، يتم ترتيبها بشكل منطقي بالترتيب الذي يفهمه التطبيق. عند تمرير الخريطة إلى موقع جديد، أو إلى مستوى تكبير/تصغير جديد، تحدّد واجهة برمجة التطبيقات المربّعات المطلوبة باستخدام إحداثيات البكسل، وتترجم هذه القيم إلى مجموعة من المربّعات المطلوب استردادها. يتم تعيين إحداثيات المربعات هذه باستخدام مخطط يسهّل بشكل منطقي تحديد المربع الذي يحتوي على الصور لأي نقطة محددة.

يتم ترقيم المربعات في "خرائط Google" من المصدر نفسه المستخدَم في وحدات البكسل. بالنسبة إلى تطبيق Google لإسقاط "ماركاتور"، يكون مربّع المصدر في زاوية الشمال الغربي من الخريطة دائمًا، مع زيادة قيم x من الغرب إلى الشرق وy زيادة من الشمال إلى الجنوب. تتم فهرسة المربعات باستخدام إحداثيات x,y من ذلك المصدر. على سبيل المثال، في مستوى التكبير/التصغير 2، عند تقسيم الأرض إلى 16 جزءًا، يمكن الإشارة إلى كل جزء من خلال زوج x,y فريد:

خريطة للعالم مقسمة إلى أربعة صفوف وأربعة أعمدة من المربعات.

لاحظ أنه عن طريق قسمة إحداثيات البكسل على حجم المربّع (256) وأخذ الأجزاء الصحيحة من النتيجة، فأنت تحصل كمنتج ثانوي على إحداثيات المربع على مستوى التكبير/التصغير الحالي.

مثال

يعرض المثال التالي إحداثيات شيكاغو، إلينوي: قيم خطوط الطول/العرض، والإحداثيات العالمية، وإحداثيات البكسل، وإحداثيات المربعات. استخدِم عنصر التحكّم في التكبير للاطّلاع على قيم الإحداثيات على مستويات تكبير/تصغير مختلفة.

للاطلاع على طريقة حساب الإحداثيات، اعرض الرمز.