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

العنونة

عنونة برموز Plus Code لمنطقة الشرق الأوسط وشمال إفريقيا — ترميز وفك ترميز وحل عناوين قابلة للمشاركة وقابلة للاشتقاق دون اتصال، بالإضافة إلى إكمال تلقائي متسامح مع الأخطاء بالعربية.

العنونة

في معظم منطقة الشرق الأوسط وشمال إفريقيا، تكون عناوين الشوارع الرسمية نادرة أو غير رسمية أو ببساطة غير مُعلَّمة — فقد لا يُعرف مبنى إلا بأنه "ثالث منعطف بعد المخبز". تعالج طبقة العنونة في Navvo هذا الأمر عبر رموز Plus Code: رمز قصير وفريد عالميًا مشتق مباشرةً من إحداثية. تحصل أي نقطة على الأرض على عنوان مُدمَج قابل للاشتقاق دون اتصال (لا حاجة لأي استعلام لحسابه)، وفريد عالميًا، وقابل للمشاركة — الصقه في رسالة ليصل المستلِم ضمن أمتار قليلة. ويمكن اختصار الرموز إلى صيغة محلية (نسبةً إلى منطقة قريبة) للاستخدام اليومي، مثل XW36+H6 عبدون، عمّان.

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

يُحلّ رمز Plus Code الكامل (العالمي) مثل 8G3QXW36+H6 في أي مكان دون سياق إضافي. أما الرمز القصير/المحلي مثل XW36+H6 فيُسقِط بادئة المنطقة لسهولة القراءة، ويجب اقترانه بنقطة مرجعية قريبة (lat/lng) أو باسم منطقة لاستعادته. تتراوح أطوال الرموز بين 811: كلما طال الرمز زادت دقّته. الطول الافتراضي 10 يُحلّ إلى مربّع بحجم نحو 14 م.

GET /geo/pluscode

ترميز إحداثية إلى رمز Plus Code (Open Location Code).

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

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

lat
number required
خط العرض (WGS84).
lng
number required
خط الطول (WGS84).
length
integer
طول الرمز، 811. الافتراضي 10 (دقّة ≈ 14 م). القيم الأعلى تُنتج رمزًا أطول وأكثر دقّة.
curl -s "https://navvo.io/api/v1/geo/pluscode?lat=31.94920&lng=35.89970&length=10" \
  -H "x-api-key: nvvo_YOUR_KEY"

الاستجابة

{
  "provider": "navvo-addressing",
  "code": "8G3QXW36+H6",
  "lat": 31.9492,
  "lng": 35.8997
}
الحقلالنوعالوصف
providerstringدائمًا navvo-addressing.
codestringرمز Plus Code الكامل (العالمي) للنقطة.
lat / lngnumberالإحداثية المُدخلة، مُعادة كما هي.

الأخطاء

الحالةمتى
400lat/lng مفقود أو غير رقمي، أو length خارج النطاق 811.
401 / 403مفتاح مفقود/غير صالح، أو يفتقر المفتاح إلى النطاق geo.

GET /geo/pluscode/decode

فك ترميز رمز Plus Code إلى إحداثية وخلية حدودها. يقبل رمزًا كاملًا أو رمزًا قصيرًا/محليًا؛ وللرمز القصير، مرِّر نقطة مرجعية lat/lng لاستعادة أقرب خلية مطابِقة.

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

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

code
string required
رمز Plus Code المراد فك ترميزه. قد يكون كاملًا (مثل 8G3QXW36+H6) أو قصيرًا/محليًا (مثل XW36+H6).
lat
number
خط عرض مرجعي. مطلوب فقط عندما يكون code رمزًا قصيرًا/محليًا — يُستخدَم لاستعادة أقرب تطابق.
lng
number
خط طول مرجعي. يقترن بـ lat لاستعادة الرمز القصير.
# رمز كامل — لا حاجة لمرجع
curl -s "https://navvo.io/api/v1/geo/pluscode/decode?code=8G3QXW36%2BH6" \
  -H "x-api-key: nvvo_YOUR_KEY"

# رمز قصير/محلي — مرِّر نقطة مرجعية قريبة
curl -s "https://navvo.io/api/v1/geo/pluscode/decode?code=XW36%2BH6&lat=31.95&lng=35.90" \
  -H "x-api-key: nvvo_YOUR_KEY"
يجب ترميز الرمز + داخل Plus Code على شكل %2B في سلسلة الاستعلام.

الاستجابة

{
  "provider": "navvo-addressing",
  "code": "8G3QXW36+H6",
  "lat": 31.949125,
  "lng": 35.899625,
  "bounds": {
    "south": 31.94906,
    "west": 35.89956,
    "north": 31.94919,
    "east": 35.89969
  }
}
الحقلالنوعالوصف
providerstringدائمًا navvo-addressing.
codestringالرمز الكامل المُحلَّل (يُوسَّع الرمز القصير المُمرَّر مقابل النقطة المرجعية).
lat / lngnumberمركز الخلية المفكوكة.
boundsobjectامتداد الخلية: south، west، north، east بالدرجات العشرية.

الأخطاء

الحالةمتى
400code مفقود أو ليس رمز Plus Code صالحًا، أو رمز قصير مُمرَّر دون مرجع lat/lng صالح للاستخدام.
401 / 403مفتاح مفقود/غير صالح، أو يفتقر المفتاح إلى النطاق geo.

GET /geo/address

حلّ إحداثية إلى حزمة العنونة الكاملة — كل ما يحتاجه التطبيق لعرض ومشاركة عنوان مألوف للبشر لنقطة معيّنة. هذه هي النقطة النهائية المُوصى بها لعنونة المنطقة: تجمع في استدعاء واحد الرمز العالمي، والرمز المحلي، واسم المنطقة، وعنوانًا محليًا جاهزًا للعرض localAddress، ورابطًا قابلًا للمشاركة.

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

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

lat
number required
خط العرض (WGS84).
lng
number required
خط الطول (WGS84).
length
integer
طول رمز Plus Code، 811. الافتراضي 10 (≈ 14 م).
curl -s "https://navvo.io/api/v1/geo/address?lat=31.94920&lng=35.89970" \
  -H "x-api-key: nvvo_YOUR_KEY"

الاستجابة

{
  "provider": "navvo-addressing",
  "lat": 31.9492,
  "lng": 35.8997,
  "plusCode": "8G3QXW36+H6",
  "shortCode": "XW36+H6",
  "locality": "عبدون، عمّان",
  "localAddress": "XW36+H6 عبدون، عمّان",
  "shareUrl": "https://navvo.io/a/8G3QXW36+H6"
}
الحقلالنوعالوصف
providerstringدائمًا navvo-addressing.
lat / lngnumberالإحداثية المُدخلة، مُعادة كما هي.
plusCodestringالرمز الكامل الفريد عالميًا (يُحلّ في أي مكان دون سياق).
shortCodestringالرمز المحلي المختصر (يُسقِط بادئة المنطقة؛ اقترِنه بـ locality للاستخدام اليومي).
localitystringأقرب منطقة مُسمّاة، مثل عبدون، عمّان.
localAddressstringعنوان محلي جاهز للعرض يجمع shortCode + locality، مثل XW36+H6 عبدون، عمّان.
shareUrlstringرابط أساسي يفتح النقطة على Navvo.
تُعاد المناطق وفق تفضيل لغة الطلب — فلتطبيقات العربية أولًا تحصل على أسماء مناطق عربية (مثل عبدون، عمّان)، فتُقرأ localAddress بشكل طبيعي بالعربية. أما plusCode نفسه فمستقل عن اللغة، لذا يبقى قابلًا للمشاركة عبر جميع اللغات.

الأخطاء

الحالةمتى
400lat/lng مفقود أو غير رقمي، أو length خارج النطاق 811.
401 / 403مفتاح مفقود/غير صالح، أو يفتقر المفتاح إلى النطاق geo.

POST /geo/address/batch

عنونة بالجملة — حلّ حتى 50 إحداثية إلى عناوين Plus Code في طلب واحد (الصيغة المجمّعة لـ GET /geo/address). تعيد كل نقطة الحزمة الكاملة (plusCode، shortCode، locality، localAddress). النطاق المطلوب: geo.

curl -s -X POST "https://navvo.io/api/v1/geo/address/batch" \
  -H "x-api-key: $NAVVO_API_KEY" -H "content-type: application/json" \
  -d '{ "points": [ {"lat":31.9539,"lng":35.9106}, {"lat":29.532,"lng":35.006} ], "length": 10 }'
الحقلالنوعملاحظات
pointsarrayمطلوب — كائنات { lat, lng } (أو lon)، حتى 50
lengthnumberطول Plus Code اختياري 811 يُطبَّق على الجميع
{
  "provider": "navvo-addressing", "count": 2, "resolved": 2,
  "results": [
    { "lat": 31.9539, "lng": 35.9106, "ok": true, "plusCode": "8G3QXW36+H6", "shortCode": "XW36+H6", "locality": "منطقة زهران, عمان", "localAddress": "XW36+H6 منطقة زهران, عمان" }
  ]
}

يَعُدّ resolved النقاط الناجحة؛ والنقطة ذات الإحداثيات خارج النطاق أو غير الرقمية تعيد ok:false مع error: "invalid coordinates". و400 إذا كانت points[] مفقودة/فارغة.


GET /geocode/autocomplete

اقتراحات إكمال تلقائي متسامحة مع الأخطاء لاستعلام قيد الكتابة. مُصمَّمة للإدخال الواقعي الفوضوي في المنطقة: تطبّق تطبيعًا للعربية (تتسامح مع اختلافات الأحرف الشائعة مثل أ/إ/آ ← ا، و ة ← ه، وتُزيل التشكيل) وتفهم العربيزي — "أبجدية الدردشة" اللاتينية التي تستخدم الأرقام بدل أحرف عربية (مثل shar3 abdaliشارع العبدلي). صُمِّمت لإعادة نتائج وجيهة حتى لو كان الاستعلام جزئيًا أو هجاؤه غير دقيق.

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

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

q
string required
الاستعلام الجزئي المراد إكماله. يقبل النص العربي أو اللاتيني أو العربيزي.
limit
integer
أقصى عدد اقتراحات تُعاد. الافتراضي 10.
locale
string
تفضيل اللغة للتسميات. الافتراضي ar,en (العربية أولًا).
# إدخال بالعربيزي — أبجدية الدردشة برقم يحلّ محلّ حرف عربي
curl -s "https://navvo.io/api/v1/geocode/autocomplete?q=shar3%20abdali&limit=5" \
  -H "x-api-key: nvvo_YOUR_KEY"

الاستجابة

{
  "provider": "navvo-geocode",
  "query": "shar3 abdali",
  "normalizedQuery": "شارع العبدلي",
  "suggestions": [
    {
      "id": "way/98765432",
      "label": "شارع العبدلي، عمّان",
      "name": "شارع العبدلي",
      "lat": 31.96374,
      "lng": 35.92213,
      "type": "road",
      "category": "highway"
    }
  ]
}
الحقلالنوعالوصف
providerstringدائمًا navvo-geocode.
querystringالاستعلام الأصلي، مُعادًا كما هو.
normalizedQuerystring | undefinedالصيغة المُطبَّعة/المنقولة حرفيًا التي طابَق عليها Navvo فعليًا (تظهر عند إعادة كتابة الإدخال، مثل العربيزي ← العربية).
suggestionsarrayالمرشّحون مرتّبون (انظر أدناه). مصفوفة فارغة عند عدم وجود تطابق.
suggestions[].idstringمعرّف ثابت للمكان المُقترَح.
suggestions[].labelstringتسمية العرض، منسّقة وفق locale المطلوب.
suggestions[].namestringالاسم الأساسي للمكان.
suggestions[].lat / lngnumberإحداثية الاقتراح.
suggestions[].typestringالنوع الدقيق (مثل road، city، suburb، poi).
suggestions[].categorystringالفئة العامة (مثل highway، place، amenity).
اعرض label في القائمة المنسدلة، لكن احسم الاختيار عبر idlat/lng) — فالتسميات مُترجَمة وقد تختلف بين اللغات. وعند وجود normalizedQuery يمكنك إظهاره كتلميح "يجري البحث عن…" ليرى المستخدمون كيف فُسِّر العربيزي الخاص بهم.

الأخطاء

الحالةمتى
400q مفقود/فارغ، أو limit غير رقمي.
401 / 403مفتاح مفقود/غير صالح، أو يفتقر المفتاح إلى النطاق geocode.
Copyright © 2026