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

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

  • وحدات صور خريطة الطريق المستندة إلى بيانات الارتفاعات المستندة إلى المتجهات مع تنسيق المخططات البيانية من Google

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

  • خرائط خطوط الكنتور لظلال التلال

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

مواضيع الخرائط

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

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

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

طلبات الحصول على معلومات عن إطار العرض

يحدّد إطار العرض حجم المربّع الذي يُشكّل إطارًا لمشهد العالم. تؤدي طلبات معلومات "مساحة العرض" إلى عرض تفاصيل عن مربّعات الخريطة التي تشكّل مساحة العرض الحالية. يُرجى طلب معلومات إطار العرض لضمان تجنُّب طلب صور بمستويات تكبير غير متوفّرة.

على سبيل المثال، تتوفّر صور لمعظم المدن عند مستوى التكبير 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). للتعبير عن الحدود التي تعبر خط الطول المقابل، يمكن أن يكون الغرب موجبًا (على سبيل المثال، 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
يحتوي على سلسلة إحالة مسؤولية يجب عرضها على خريطتك عند عرض خريطة الطريق وشرائح الصور من الأقمار الصناعية. لمزيد من المعلومات، يُرجى الاطّلاع على سياسات Map Tiles API.
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
  };
}