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

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

  • وحدات صور خريطة الطريق المستندة إلى بيانات الارتفاعات المستندة إلى المتجهات مع تنسيقات المخطّطات من 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
  };
}