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

المطوّرون في المنطقة الاقتصادية الأوروبية

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

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

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

  • خرائط خطوط الارتفاع المظلّلة

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

مظاهر الخريطة

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

مظهر الخريطة الوصف
Roadmap الطرق والمباني ونقاط الاهتمام والحدود السياسية
القمر الصناعي صور فوتوغرافية مأخوذة من الفضاء
التضاريس خريطة كنتورية تعرض الميزات الطبيعية مثل النباتات

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

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

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

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

طلب إطار العرض هو طلب استرداد بيانات باستخدام GET عبر HTTPS بالصيغة التالية.

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
  };
}