Navvo
مرجع الواجهة البرمجية

بلاطات الخريطة والأنماط

أنماط Navvo Maps، البلاطات المتجهية والنقطية، المحارف، والصور المركَّبة — خريطة أساس متكاملة من المصدر الأول.

بلاطات الخريطة والأنماط

خريطة أساس متكاملة من المصدر الأول يقدِّمها Navvo Maps. وجِّه عارض Navvo Maps إلى رابط نمط وكل شيء آخر — البلاطات المتجهية، المحارف، الصور المركَّبة، التظليل الجبلي، بلاطات الارتفاعات — يقدِّمه Navvo. والاستثناء الوحيد هو الصور الجوية في نمط satellite: فهي صور مرخّصة من طرف ثالث، ويجلبها المتصفح مباشرةً من شبكة توصيل المحتوى الخاصة بمزوِّد الصور لا من نطاق navvo.io، ولذلك يلزم عرض إسناد المزوِّد إلى جانب إسناد Navvo — انظر الإسناد.

النطاق المطلوب: tiles

طلبات الخريطة لا يمكنها إرسال ترويسات. المتصفحات تجلب روابط النمط/البلاطة/المحارف/الصور المركَّبة مباشرةً ولا يمكنها إرفاق ترويسة x-api-key. مرِّر المفتاح كمعامل استعلام على رابط النمط: ?api_key=nvvo_YOUR_KEY.
بدون مفتاح API؟ الخريطة عليها علامة مائية. بدون مفتاح API، تُعرَض خريطة الأساس مع علامة مائية "Navvo Map Developer (Provide Your API Key)" مكرَّرة عبر كل بلاطة على خلفية داكنة شبه شفافة. مرِّر مفتاح api_key (كمعامل استعلام على رابط النمط، أو apiKey في الـ SDK) للحصول على خريطة نظيفة بلا علامة مائية.
عبر الأصول (CORS). تعكس الواجهة البرمجية أصل الطلب (Origin)، لذا يمكن جلب Navvo Web SDK وروابط البلاطة/النمط من أي موقع طرف ثالث يضمِّن خريطة Navvo مُفعَّلة بمفتاح. المصادقة قائمة على ترويسة Bearer / api_key (بلا كوكيز)، لذا فإنّ CORS المفتوح آمن. وتطبيقات الجوال الأصلية لا تخضع لـ CORS المتصفح إطلاقاً.

GET /tiles/styles

كتالوج أنماط الخريطة المتاحة — لبناء مُبدِّل أنماط. قيمة style لكل عنصر هي ما تمرّره إلى GET /tiles/style?style=؛ وcategory هي base أو imagery.

curl -s "https://navvo.io/api/v1/tiles/styles" -H "x-api-key: $NAVVO_API_KEY"
{
  "provider": "navvo-tiles", "count": 6, "styleUrl": "/tiles/style?style={style}",
  "styles": [
    { "style": "standard", "label": "Standard", "category": "base", "description": "The default road map." },
    { "style": "positron", "label": "Light", "category": "base", "description": "Minimal light basemap." },
    { "style": "dark", "label": "Dark", "category": "base", "description": "Night/dark basemap." },
    { "style": "satellite", "label": "Satellite", "category": "imagery", "description": "Aerial/satellite imagery." },
    { "style": "3d", "label": "3D Buildings", "category": "base", "description": "3D building extrusions (supports ?terrain=1)." },
    { "style": "terrain", "label": "Terrain", "category": "imagery", "description": "Shaded-relief terrain." }
  ]
}

GET /tiles/style

تُعيد مستند نمط Navvo Maps كاملًا (مواصفة النمط المتجهي القياسية، الإصدار v8) لنمط مُسمّى. هذا هو الرابط الذي تعطيه لـ عارض Navvo Maps.

معاملات الاستعلام

style
string
أحد القيم: standard (افتراضي)، أو road (اسم بديل لـ standard)، أو positron، أو dark، أو satellite، أو terrain، أو 3d. القائمة الكاملة بالتسميات في GET /tiles/styles. القيم غير المعروفة تُعيد 400.
version
string
وسم تجميلي فقط — يصبح اسم النمط name.
terrain
string
1/true لتضمين مصدر تضاريس الارتفاع في نمط 3d (عند توفره).
const map = new NavvoMaps.Map({
  container: "map",
  style: "https://navvo.io/api/v1/tiles/style?style=standard&api_key=nvvo_YOUR_KEY",
  center: [35.91, 31.95],
  zoom: 12,
});

يشير النمط المُعاد إلى موارد فرعية مستضافة لدى Navvo (المحارف، الصور المركَّبة، وقالب البلاطات المتجهية) — كلها يقدِّمها Navvo. أنت لا تطلب هذه مباشرةً؛ بل يحمِّلها العارض تلقائيًا من النمط.

يحمل المصدر المتجهي قالب البلاطات مباشرةً (tiles) بدل url يشير إلى مستند TileJSON. هذا يحذف رحلة ذهاب وإياب كاملة قبل إمكانية طلب أول بلاطة، ما يسرّع تحميل الخريطة البارد بشكل ملموس. ولا يزال GET /tiles/tilejson/navvo مُتاحًا لمن يفضّل حلّ الفهرس بنفسه:

{
  "version": 8,
  "name": "Navvo standard",
  "sources": {
    "navvo": {
      "type": "vector",
      "tiles": ["https://navvo.io/api/v1/tiles/vector/navvo/planet/{z}/{x}/{y}.pbf?v=<version>"],
      "minzoom": 0, "maxzoom": 14,
      "attribution": "© Navvo"
    }
  },
  "layers": [
    { "id": "background", "type": "background", "paint": { "background-color": "#FAFBFC" } },
    { "id": "water", "type": "fill", "source": "navvo", "source-layer": "water", "paint": { "fill-color": "#D8E7FF" } }
  ],
  "metadata": { "navvoStyle": "standard", "navvoAttribution": "© Navvo" }
}

نمطا satellite وterrain ليسا نمطين نقطيين أحاديّي المصدر، بل هجينان: طبقة نقطية سفلية يعلوها مصدر Navvo المتجهي نفسه.

  • satellite — طبقة الصور الجوية النقطية (معرّف المصدر satellite) في الأسفل، وفوقها مصدر Navvo المتجهي (navvo) الذي يرسم الطرق وأسماء الشوارع وتسميات الأماكن، مع glyphs وsprite من Navvo. يعيد الطلب المُوثَّق ‏مصدرين و75 طبقة: طبقة خلفية واحدة، وطبقة satellite نقطية واحدة، و73 طبقة من navvo.
  • terrain — طبقة التظليل الجبلي النقطية التي تستضيفها Navvo (معرّف المصدر ne2_shaded، maxzoom يساوي 6) تحت مصدر Navvo المتجهي الكامل (navvo). يعيد الطلب المُوثَّق ‏مصدرين و110 طبقات، بلا أي مضيف خارجي وبلا مصدر ارتفاعات (DEM).
هذه الأعداد تخصّ الطلب المُوثَّق. وبدون مفتاح API تكتسب الاستجابة مصدرًا وطبقة إضافيين باسم navvo-watermark (فيصبح satellite ‏3/76 وterrain ‏3/111). فإذا كان تكاملك يتحقّق من عدد المصادر أو الطبقات، فوثِّق الطلب أولًا؛ وإلا فسيقيس النمط نفسه قيمًا مختلفة بين بيئة التطوير وبيئة الإنتاج.

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

الأنماط standard/dark/positron/3d متجهية خالصة، بينما satellite وterrain هجينتان: طبقة نقطية سفلية يعلوها مصدر navvo المتجهي (ومعه محارف Navvo وصورها المركَّبة). استخدم /tiles/style كنقطة دخول وحيدة — ويتولى Navvo Maps حل البقية.
المباني. في الأنماط المتجهية غير 3d (standard/dark/positron)، تُعرض المباني كـأشكال ثنائية الأبعاد مسطّحة عبر طبقة building من نوع fill، وهي مرئية افتراضيًا لكنها تظهر فقط عند التقريب (minzoom ≈ 15.5). لا يُرفع أي شيء — تبقى المخططات مسطّحة حتى عند إمالة الكاميرا (مثلًا أثناء الملاحة).لـرفع المباني إلى ثلاثية الأبعاد على تلك الأنماط، أضِف طبقة fill-extrusion خاصة بك فوق طبقة المصدر نفسها:
map.addLayer({
  id: 'buildings-3d', type: 'fill-extrusion',
  source: 'navvo', 'source-layer': 'building', minzoom: 15.5,
  paint: {
    'fill-extrusion-color': '#cfd5e0',
    'fill-extrusion-height': ['coalesce', ['get', 'render_height'], ['get', 'height'], 6],
    'fill-extrusion-base': ['coalesce', ['get', 'render_min_height'], ['get', 'min_height'], 0],
  },
});
// (لا تظهر البثوق ثلاثية الأبعاد إلا عند إمالة الكاميرا — استخدم map.setPitch(...))
يتضمّن نمط 3d المخصّص هذه الطبقة المرفوعة (navvo-3d-buildings) جاهزةً مع كاميرا مائلة — استخدمه عندما تريد مبانيَ ثلاثية الأبعاد جاهزة.
التخزين المؤقت. تُرسَل استجابات /tiles/style مع الترويسة Cache-Control: public, max-age=300, stale-while-revalidate=86400. لذا يمكن إعادة استخدام مستند النمط لمدة 5 دقائق (ويُقدَّم بصيغة stale-while-revalidate حتى يوم كامل)، ما يسمح للمُصيِّر أو عامل الخدمة (service worker) أو شبكة CDN بتخزينه مؤقتًا عبر عمليات إعادة التحميل بدل جلبه في كل مرة تُفتح فيها الخريطة. تظهر تعديلات النمط خلال ~5 دقائق.
الضغط. تُضغَط البلاطات المتجهية والخطوط (glyphs) وملف السبرايت JSON وبلاطات تغطية/إشارات/نقاط Mapillary عندما يعلن طلبك دعم الضغط: يُفضَّل Brotli (Content-Encoding: br) عندما تتضمن Accept-Encoding القيمة br، مع الرجوع إلى gzip — وهو ما يتفاوض عليه كل متصفح وكل عميل HTTP قياسي (ومُصيِّر Navvo) تلقائيًا، مع فك الضغط بشفافية عند الاستلام. عادةً ما يكون Brotli أصغر بنحو 10–20% من gzip على البلاطات المتجهية؛ ويقلّل gzip وحده حجمها بنحو 35% مقارنةً بالحجم الخام. أما البلاطات النقطية/الصور (PNG/JPEG) فهي مضغوطة أصلًا وتُقدَّم كما هي. تحمل الاستجابات Vary: Accept-Encoding كي يخزّن أي وسيط تخزين النسخة الصحيحة.
إصدارات البلاطات والتخزين المؤقت الدائم. تحمل قوالب البلاطات المُعادة من /tiles/style و/tiles/tilejson/navvo مُعامل إصدار في الاستعلام (?v=…). تُجاب الطلبات التي تستخدم ذلك الرابط المُصدَّر بالترويسة Cache-Control: public, max-age=31536000, immutable — يتغيّر الرابط نفسه كلما تغيّرت البيانات، لذا يمكن للعملاء وعمال الخدمة وشبكات CDN تخزين البلاطات المُصدَّرة لعام كامل دون إعادة تحقق. استخدم قالب البلاطات كما يُعاد تمامًا من النمط/TileJSON (لا تحذف سلسلة الاستعلام) للاستفادة من ذلك. الطلبات غير المُصدَّرة تظل تعمل وتُقدَّم مع max-age=86400, stale-while-revalidate=604800.
الطلبات الشرطية. تتضمن استجابات البلاطات ترويسة ETag، وهي في أصل Navvo بصمة محتوى قوية. إعادة إرسال الطلب مع If-None-Match: <etag> تُعيد 304 Not Modified بلا جسم عندما تكون البلاطة غير متغيرة — مفيد لإعادة التحقق الخفيفة من الوسطاء ومهام المزامنة دون اتصال.انتبه إلى أنّ شبكة CDN أمام الأصل قد تعيد ضغط الجسم فتُرجع الصيغة الضعيفةW/"…" للبصمة نفسها. لذلك أعِد دائمًا إرسال القيمة كما استلمتها حرفيًا في If-None-Match؛ فالأصل يقارن السلسلة حرفيًا، وقيمة تحمل البادئة W/ لم يُصدرها هو تُقابَل بـ200 وجسم كامل بدل 304.

الإسناد

يستضيف Navvo خريطة الأساس بنفسه — البلاطات المتجهية والمحارف والصور المركَّبة وخلفية التظليل الجبلي وبلاطات الارتفاعات (DEM) — وكلها تحمل إسناد © Navvo.

  • أنماط الأساس (standard، dark، positron، 3d، terrain): يكفي إسناد © Navvo، ولا يلزم أي إسناد لطرف ثالث. أبقِ عنصر التحكم المُصغَّر بالإسناد على الخريطة ظاهرًا — تعرضه حِزم Navvo SDK افتراضيًا.
  • نمط satellite: الصور الجوية فيه صور مرخّصة من طرف ثالث، ويشير مصدرها مباشرةً إلى شبكة توصيل المحتوى الخاصة بمزوِّد الصور. لذلك يحمل هذا المصدر إسناد المزوِّد Imagery © Esri, Maxar, Earthstar Geographics إضافةً إلى © Navvo، ويجب عرض الإسنادَين معًا. يقوم عنصر التحكم بالإسناد في عارض Navvo بذلك تلقائيًا انطلاقًا من مستند النمط نفسه، فلا حاجة إلى كتابة النص يدويًا ما دمت تستخدم العارض.
  • تُعيد GET /map/config كائن attribution لواجهات الإسناد المخصّصة — لكن انتبه إلى أنّ قيمة satellite فيه هي © Navvo وليست إسناد مزوّد الصور. لذا يجب على أي سطح إسناد مخصّص أن يقرأ إسناد الصور من حقل attribution الخاص بمصدر satellite داخل مستند النمط، وإلا فسيُسقط إسنادًا واجبًا تعاقديًا.

ماذا تعرض الخريطة الأساسية

الخريطة الأساسية جغرافيا لا دليل أعمال: شوارع ومبانٍ واستعمالات أراضٍ ومياه وحدائق وأسماء أماكن إدارية. ولا تحمل أي متاجر أو مطاعم أو عيادات أو فنادق أو مكاتب أو بنوك أو مواقف نقل.

وهذا مفروض في بيانات البلاطة لا في النمط. فطبقة poi القادمة من المصدر تُزال من كل بلاطة متجهية قبل تقديمها، فتغيب أيًّا كان النمط الذي يرسمها — نمطنا، أو نمط كتبته بنفسك، أو نمط طرف ثالث جاهز توجّهه إلى بلاطاتنا. والنمط الذي يشير إلى source-layer: "poi" لن يرسم شيئًا ببساطة.

والأماكن الوحيدة التي يعرضها نافّو هي التي في كتالوج نافّو نفسه، ولا تُرسم على الخريطة الأساسية تلقائيًا أبدًا. اطلبها فتظهر:

ما تريدهالنداء
أماكن تطابق استعلامًاGET /search
أماكن قرب نقطةGET /places?near=lat,lng
أماكن لإطار عرض الخريطة، مرتّبة حسب التقريبGET /map/poi

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

الخريطة الأساسية هي رسم نافّو الخاص لبيانات جغرافية مفتوحة. وقوائم الأعمال فيها لم تكن يومًا بيانات نافّو ولا تُقدَّم — وإن احتجت طبقة أماكن فمصدرها النقاط أعلاه.

مصادر البلاطات

تدعم نقاط النهاية هذه الأنماط المذكورة أعلاه. يطلبها العارض نيابةً عنك عند تحميل النمط — وعادةً لا تستدعيها يدويًا. وهي مدرجة للاكتمال وللعارضات المتقدمة/المخصصة.

نقطة النهايةتُعيد
GET /tiles/vector/navvo/planet/{z}/{x}/{y}.pbfبلاطة متجهية واحدة (protobuf)، application/x-protobuf. عادةً ما يكون المقطع بعد navvo بقيمة planet؛ ويُقبَل امتداد .pbf على {y}. مُخزَّنة مؤقتًا public, max-age=86400.
GET /tiles/tilejson/navvoفهرس البلاطات المتجهية (TileJSON) الذي تشير إليه الأنماط المتجهية كرابط url لمصدرها — قالب البلاطة، مدى التكبير، والطبقات المتجهية.
GET /tiles/raster/{source}/{z}/{x}/{y}.pngبلاطة نقطية واحدة. source ∈ standard, dark, satellite, navvo-natural-earth. أنواع المحتوى الفعلية: standard/dark → image/png؛ satellite → image/jpeg أيًّا كان الامتداد المطلوب؛ navvo-natural-earth → image/png، أو image/webp عند طلب الامتداد .webp (أصغر بنحو 70–95% وهو ما تستخدمه الأنماط الحيّة).
GET /tiles/glyphs/navvo/{fontstack}/{range}.pbfنطاقات محارف الخطوط (.pbf) التي يشير إليها glyphs في النمط.
GET /tiles/sprites/navvo/spriteالرابط الأساسي لأطلس الصور المركَّبة؛ يُلحِق العارض .json (الفهرس) و.png و@2x.png (الصور).
قيم {source} النقطية:
  • standard/dark — تُعيدان بلاطة نائبة محايدة لا تصييرًا حقيقيًا للخريطة: خلفية مسطّحة مع خطوط ماء/يابسة/شبكة زخرفية، ومن دون رسم شبكة الطرق عمدًا. استخدم الأنماط المتجهية إن أردت خريطة حقيقية.
  • satellite — ينقل عبر Navvo صورًا جوية مرخّصة من طرف ثالث (image/jpeg)، ويظل إسناد الصور مطلوبًا كما في قسم الإسناد.
  • navvo-natural-earth — خلفية التظليل الجبلي العالمية ذات التكبير المنخفض التي تستضيفها Navvo؛ أضِف الامتداد .webp للحصول على النسخة المضغوطة.
القيمة terrainغير مدعومة حاليًا على هذه النقطة: فهي تُعيد 503 مع الرسالة Terrain tiles are not configured في بيئة الإنتاج.

يمكنك أيضًا توصيل مصدر نقطي مباشرةً:

map.addSource("nav-sat", {
  type: "raster",
  tiles: ["https://navvo.io/api/v1/tiles/raster/satellite/{z}/{x}/{y}.png"],
  tileSize: 256,
  maxzoom: 19,
  attribution: "© Navvo · Imagery © Esri, Maxar, Earthstar Geographics",
});

يوصل هذا المقطع المسار الذي ينقله Navvo للصور (مفيد إن احتجت مسارًا من الأصل نفسه)، بينما يشير النمط الافتراضي /tiles/style?style=satellite مباشرةً إلى شبكة توصيل المحتوى الخاصة بمزوِّد الصور للحصول على زمن استجابة أقل. وفي كلتا الحالتين يبقى إسناد الصور مطلوبًا، ولهذا يظهر في attribution أعلاه.

اضبط maxzoom: 19 على مصدر الأقمار الصناعية. الصور الفضائية أصلية حتى التكبير 19؛ والطلبات فوقه تُعيد 404. عند تحديد maxzoom يقوم المُصيِّر بتكبير بكسلات z19 الحقيقية (حادّة وفورية) بدل إطلاق طلبات لا يمكن أن تنجح. مستند /tiles/style?style=satellite يعلن ذلك نيابةً عنك — الأمر يهم فقط عند ربط المصدر النقطي يدويًا.

GET /tiles/layers

فهرس اكتشاف صغير للطبقات المنطقية المتاحة، وروابط الأنماط، وقوالب البلاطات النقطية.

{
  "layers": ["administrative", "water", "buildings", "roads", "poi", "places"],
  "styles": {
    "standard": "/api/v1/tiles/style?style=standard",
    "dark": "/api/v1/tiles/style?style=dark",
    "satellite": "/api/v1/tiles/style?style=satellite",
    "terrain": "/api/v1/tiles/style?style=terrain"
  },
  "tileProxy": {
    "standardRaster": "/api/v1/tiles/raster/standard/{z}/{x}/{y}.png",
    "darkRaster": "/api/v1/tiles/raster/dark/{z}/{x}/{y}.png",
    "satelliteRaster": "/api/v1/tiles/raster/satellite/{z}/{x}/{y}.png",
    "terrainRaster": "/api/v1/tiles/raster/terrain/{z}/{x}/{y}.png"
  },
  "timeMachine": {
    "template": "/api/v1/tiles/gibs/{layer}/{z}/{x}/{y}?date={date}",
    "defaultDate": "2026-07-25",
    "layers": [
      { "key": "truecolor", "label": "True color (morning)", "maxZoom": 9 },
      { "key": "truecolor-aqua", "label": "True color (afternoon)", "maxZoom": 9 },
      { "key": "truecolor-viirs", "label": "True color (hi-res)", "maxZoom": 9 },
      { "key": "snow", "label": "Snow cover", "maxZoom": 8 },
      { "key": "aerosol", "label": "Aerosol / dust", "maxZoom": 6 }
    ]
  }
}
يُعلن الحقل terrainRaster ضمن tileProxy، لكنه غير مُفعَّل حاليًا: طلب /tiles/raster/terrain/{z}/{x}/{y}.png يُعيد 503 مع الرسالة Terrain tiles are not configured. استخدم النمط terrain من /tiles/style بدلاً منه.
للحصول على طبقات الخريطة العلوية (حركة المرور، الحوادث، الطقس، النقل العام، مناطق اللوجستيات) وبيان إعداد الخريطة الكامل، انظر بيانات الخريطة والمخاطر.

GET /tiles/cache/status

خلافًا لبقية هذه الصفحة، لا يحتاج هذا الطلب إلى مفتاح API.

لقطة للقراءة فقط عن حالة ذاكرة Navvo المؤقتة للبلاطات على الخادم — مفيدة لتشخيص بطء تحميل البلاطات ومعرفة ما إذا كان الطلب يُخدَم من المخزن المؤقت أم يُبنى من جديد. القيم إخبارية فقط وقد تتغيّر، فلا تبنِ عليها منطق تطبيقك.

curl -s "https://navvo.io/api/v1/tiles/cache/status"

تتضمّن الاستجابة:

  • strategy — معرّف الاستراتيجية المستخدَمة.
  • memory — طبقة الذاكرة: entries (عدد البلاطات المخزَّنة)، bytes (الحجم المستهلك)، maxBytes (السقف)، ttlSeconds (مدة الصلاحية).
  • disk — طبقة القرص: enabled، maxBytes، ttlSeconds.
  • inflight — عدد الطلبات الجارية حاليًا نحو المنبع.
  • metrics — عدّادات تراكمية: memoryHits، diskHits، misses، inflightJoins، upstreamErrors.
  • policies — سياسة التخزين المؤقّت التي يستقرّ عليها كل صنف من البلاطات.
  • warming — حالة التسخين المسبق للبلاطات: active، runs، requested، completed، failed، إضافةً إلى أوقات آخر تشغيل ومدّته.

آلة الزمن للصور الفضائية (Satellite Time-Machine)

صور فضائية مؤرَّخة ومتعدّدة الطبقات، منقولة عبر Navvo ومنزوعة العلامات التجارية للمصدر. اطلب أي طبقة مسجَّلة عند أي تاريخ.

GET /tiles/gibs/{layer}/{z}/{x}/{y}?date=YYYY-MM-DD

الطبقات: truecolor، truecolor-aqua، truecolor-viirs، snow، aerosol (الغبار/جودة الهواء). راجع GET /tiles/layers → timeMachine للحصول على السجلّ الحيّ والتاريخ الافتراضي. حذف date يستخدم تاريخًا يسبق اليوم بيومين تقريبًا (لا يوجد بحث عن أحدث صورة متاحة)؛ وGET /tiles/layers ← timeMachine.defaultDate هو المرجع الموثوق.

مستويات التكبير الأصلية وقصّها. لكل طبقة سقف تكبير أصلي: truecolor وtruecolor-aqua وtruecolor-viirs حتى 9، وsnow حتى 8، وaerosol حتى 6. الطلبات فوق ذلك السقف لا تُعيد 404، بل يقصّها الخادم تلقائيًا فيجلب البلاطة الأمّ عند المستوى الأصلي ويعيدها. أما الصيغة فتختلف بحسب الطبقة: snow وaerosol تُعيدان PNG، بينما تُعيد طبقات الألوان الحقيقية الثلاث JPEG.

بلاطات الارتفاعات (DEM)

بلاطات ارتفاعات تستضيفها Navvo (raster-dem) — المصدر خلف التضاريس ثلاثية الأبعاد (/tiles/style?style=3d&terrain=1) والتظليل الجبلي. التغطية هي الأردن؛ والبلاطات خارج حدود التغطية تعيد 404 (عامل ذلك على أنه «مسطّح»، لا خطأ).

GET /terrain/tilejson

واصف مجموعة بلاطات DEM بصيغة (TileJSON): قالب البلاطة، مدى التكبير، الحدود، وترميز الارتفاع encoding.

curl -s "https://navvo.io/api/v1/terrain/tilejson" -H "x-api-key: $NAVVO_API_KEY"
{
  "tilejson": "2.2.0", "name": "Navvo Jordan terrain", "scheme": "xyz",
  "type": "raster-dem", "format": "png",
  "encoding": "custom", "redFactor": 6553.6, "greenFactor": 25.6, "blueFactor": 0.1, "baseShift": -10000,
  "attribution": "© Navvo",
  "minzoom": 0, "maxzoom": 14, "bounds": [34.88, 29.12, 39.32, 33.38],
  "tiles": ["/api/v1/terrain/tiles/{z}/{x}/{y}.png"],
  "metadata": { "license": "ODbL", "generatedAt": "…", "tileCount": 61968 }
}

يستخدم نموذج الارتفاعات الرقمي (DEM) ترميزاً مخصّصاً (custom). فُكّ ترميز كل بكسل من البلاطة إلى أمتار عبر:

elevation_m = -10000 + R·6553.6 + G·25.6 + B·0.1

أي elevation = baseShift + R·redFactor + G·greenFactor + B·blueFactor. ويطبّق عارض Navvo Maps هذه العوامل نيابةً عنك (انظر الملاحظة أدناه)؛ ولا تحتاج إلى فكّ الترميز يدوياً إلّا لمسارات معالجة أصلية مخصّصة.

GET /terrain/tiles/{z}/{x}/{y}.png

بلاطة ارتفاع واحدة (PNG بترميز RGB للارتفاع). مخزّنة public, max-age=604800, immutable. البلاطات خارج الحدود أو غير المبنية → 404.

لا تحتاج عادةً إلى وصل DEM يدوياً: طلب GET /tiles/style?style=3d&terrain=1 يعيد نمطاً يحمل مصدر navvo-terrain-dem ومعه معاملات فك الترميز الدقيقة — عوامل الترميز المخصّص (redFactor، greenFactor، blueFactor، baseShift، أي elevation = baseShift + R·redFactor + G·greenFactor + B·blueFactor) — بالإضافة إلى terrain.exaggeration مضبوط. استخدم النمط وسيفكّ العارض ترميز الارتفاع تلقائياً.

صور الخرائط الثابتة

يعرض GET /tiles/static صورة خريطة غير تفاعلية — للرسائل البريدية والإيصالات ومعاينات الدردشة وبطاقات المشاركة الاجتماعية. لا حاجة لعارض؛ ضع الرابط مباشرةً في <img> أو في og:image. وتُعيد PNG افتراضياً.

معاملات الاستعلام

center
string required
lat,lng — مركز الخريطة (لاحظ: خط العرض أولاً).
zoom
number
تكبير 1–19. الافتراضي 13.
size
string
WxH بالبكسل، كل ضلع 64–1280. الافتراضي 600x400.
markers
string
دبابيس مفصولة بفاصلة منقوطة: lat,lng;lat,lng;…. يُرسم كل منها كدبوس Navvo.
style
string
standard (الافتراضي)، dark، satellite، أو terrain.
format
string
احذفه لصيغة PNG (الافتراضية — صورة نقطية حقيقية صالحة للاستخدام في <img> وعارضات الصور الأصلية وزواحف الشبكات الاجتماعية). وsvg يعيد الصورة المتجهية القديمة (حادّة عند أي مقياس، لكنها تعمل في DOM المتصفح فقط، وعلاماتها مراجع <image href> بعيدة).
curl -s "https://navvo.io/api/v1/tiles/static?center=31.9539,35.9106&zoom=14&size=600x400&markers=31.9539,35.9106&style=standard" \
  -H "x-api-key: $NAVVO_API_KEY" -o preview.png

الاستجابات مخزّنة (Cache-Control: public, max-age=3600) وتحمل شريط إسناد © Navvo مدموجاً في الصورة. النطاق: tiles.

Copyright © 2026