نظرة عامة على "المربّعات الثنائية الأبعاد"

مثال على خارطة الطريقتشبه مربّعات الخرائط تقسيم العالم إلى خريطة مفهرسة. الشبكة. يتيح لك الوصول إلى بيانات الخريطة والاستفادة منها بكفاءة وديناميكية على مقاييس رسم خرائط متعددة. تتيح لك Map Tiles API الوصول إلى مجموعات بيانات جغرافية موضوعية متعددة، بما في ذلك المحتوى الذي تنظّمه Google:

  • تجانب صور خريطة الطريق استنادًا إلى البيانات الطبوغرافية للمتجهات باستخدام والتصميم الخرائطي.

  • تم التقاط الصور بعدسات الأقمار الصناعية والكاميرات المحمولة جوًا والتي توفر صورًا من أعلى لأسفل (النظير) للأرض.

  • الخرائط المحيطية لجبال التلال.

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

موضوعات الخريطة

يمكنك الحصول على مربّعات خرائط لمظاهر الخرائط التالية.

مظهر الخريطة الوصف
خارطة الطريق الطرق والمباني ونقاط الاهتمام والحدود السياسية
القمر الصناعي صور تم التقاطها من الفضاء
التضاريس خريطة محيطية تُظهر الخصائص الطبيعية مثل النباتات

لطلب مربّعات الخرائط من Map Tiles API، يجب أولاً طلب للجلسة. الرمز المميز للجلسة يتتبع الحالة الحالية للخريطة وإطار العرض. عند إعداد جلستك رمز مميز، يجب ضبط القيمة mapType لتتطابق مع مظهر الخريطة الذي تريده. بعد ذلك، يجب عليك تضمين الرمز المميز للجلسة في كل طلب من طلباتك واجهة برمجة تطبيقات Map Tiles

طلبات معلومات إطار العرض

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

فعلى سبيل المثال، تمتلك معظم المدن صورًا عند مستوى التكبير/التصغير 22، لكن ليس المحيطات بما يتناسب مع سينتهي به الأمر بعرض مربعات زرقاء غير مميزة.

طلب إطار العرض هو طلب HTTPS GET في النموذج التالي.

curl "https://tile.googleapis.com/tile/v1/viewport?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&zoom=zoom&north=north&south=south&east=east&west=west"

ويحتوي الطلب على الحقول التالية:

zoom
مستوى التكبير أو التصغير لإطار العرض
north وsouth وeast وwest
أبعد نقاط الشمال والجنوب والشرق والغرب في إطار العرض، ويتم التعبير عنها بالصيغة درجات. يجب أن يكون الشمال والجنوب في النطاق (-90,90)، ويجب أن يكون الشرق والغرب في النطاق (-180، 180). للتعبير عن الحدود التي تعبر خط الطول 180 درجة، يمكن أن يكون الغرب موجبة (على سبيل المثال، 170) ومنطقة الشرق يمكن أن تكون سالبة (على سبيل المثال، -170). الكل مطلوبة.

الردود على معلومات إطار العرض

تخبرك استجابة إطار العرض بالمناطق التي تحتوي على صور وأي ميزة تكبير أو تصغير المستويات. تكون استجابة معلومات إطار العرض بالشكل التالي.

{
  "copyright": "Map data ©2023",
  "maxZoomRects": [
    {
      "maxZoom": 19,
      "north": 90,
      "south": -90,
      "east": 180,
      "west": -180
    },
    {
      "maxZoom": 9,
      "north": 90,
      "south": -90,
      "east": 180,
      "west": -180
    },
    {
      "maxZoom": 14,
      "north": 84.375,
      "south": -84.375,
      "east": 180,
      "west": -180
    }, ...
  ]
}

يحتوي نص الاستجابة على الحقول التالية.

copyright
يحتوي على سلسلة إحالة يجب عرضها على خريطتك عند عرض خارطة الطريق وبلاط الأقمار الصناعية. لمزيد من المعلومات، يُرجى الاطّلاع على سياسات واجهة برمجة تطبيقات "شاشات المعلومات"
maxZoomRect
يحتوي على صفيف من المستطيلات المحيطية التي تتداخل مع المستطيل الحالي إطار العرض. يحتوي أيضًا على أقصى مستوى للتكبير/التصغير المتاح داخل كل مستطيل.

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

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

var TILE_SIZE = 256;

function fromLatLngToPoint(latLng) {
  var mercator = -Math.log(Math.tan((0.25 + latLng.lat() / 360) * Math.PI));
  return {
    x: TILE_SIZE * (latLng.lng() / 360 + 0.5),
    y: TILE_SIZE / 2 * (1 +  mercator / Math.PI)
  };
}

function fromLatLngToTileCoord(latLng, zoom) {
  var point = fromLatLngToPoint(latLng);
  var scale = Math.pow(2, zoom);

  return {
    x: Math.floor(point.x * scale / TILE_SIZE),
    y: Math.floor(point.y * scale / TILE_SIZE),
    z: zoom
  };
}