العنونة
العنونة
في معظم منطقة الشرق الأوسط وشمال إفريقيا، تكون عناوين الشوارع الرسمية نادرة أو غير رسمية أو ببساطة غير مُعلَّمة — فقد لا يُعرف مبنى إلا بأنه "ثالث منعطف بعد المخبز". تعالج طبقة العنونة في Navvo هذا الأمر عبر رموز Plus Code: رمز قصير وفريد عالميًا مشتق مباشرةً من إحداثية. تحصل أي نقطة على الأرض على عنوان مُدمَج قابل للاشتقاق دون اتصال (لا حاجة لأي استعلام لحسابه)، وفريد عالميًا، وقابل للمشاركة — الصقه في رسالة ليصل المستلِم ضمن أمتار قليلة. ويمكن اختصار الرموز إلى صيغة محلية (نسبةً إلى منطقة قريبة) للاستخدام اليومي، مثل XW36+H6 عبدون، عمّان.
تغطي هذه الصفحة ترميز نقطة إلى رمز، وفك ترميز رمز إلى إحداثية، وحزمة العنونة الكاملة لنقطة، وإكمالًا تلقائيًا للترميز الجغرافي متسامحًا مع الأخطاء ومضبوطًا للإدخال العربي.
8G3QXW36+H6 في أي مكان دون سياق إضافي. أما الرمز القصير/المحلي مثل XW36+H6 فيُسقِط بادئة المنطقة لسهولة القراءة، ويجب اقترانه بنقطة مرجعية قريبة (lat/lng) أو باسم منطقة لاستعادته. تتراوح أطوال الرموز بين 8–11: كلما طال الرمز زادت دقّته. الطول الافتراضي 10 يُحلّ إلى مربّع بحجم نحو 14 م.GET /geo/pluscode
ترميز إحداثية إلى رمز Plus Code (Open Location Code).
النطاق المطلوب: geo
معاملات الاستعلام
8–11. الافتراضي 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
}
| الحقل | النوع | الوصف |
|---|---|---|
provider | string | دائمًا navvo-addressing. |
code | string | رمز Plus Code الكامل (العالمي) للنقطة. |
lat / lng | number | الإحداثية المُدخلة، مُعادة كما هي. |
الأخطاء
| الحالة | متى |
|---|---|
400 | lat/lng مفقود أو غير رقمي، أو length خارج النطاق 8–11. |
401 / 403 | مفتاح مفقود/غير صالح، أو يفتقر المفتاح إلى النطاق geo. |
GET /geo/pluscode/decode
فك ترميز رمز Plus Code إلى إحداثية وخلية حدودها. يقبل رمزًا كاملًا أو رمزًا قصيرًا/محليًا؛ وللرمز القصير، مرِّر نقطة مرجعية lat/lng لاستعادة أقرب خلية مطابِقة.
النطاق المطلوب: geo
معاملات الاستعلام
8G3QXW36+H6) أو قصيرًا/محليًا (مثل XW36+H6).code رمزًا قصيرًا/محليًا — يُستخدَم لاستعادة أقرب تطابق.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
}
}
| الحقل | النوع | الوصف |
|---|---|---|
provider | string | دائمًا navvo-addressing. |
code | string | الرمز الكامل المُحلَّل (يُوسَّع الرمز القصير المُمرَّر مقابل النقطة المرجعية). |
lat / lng | number | مركز الخلية المفكوكة. |
bounds | object | امتداد الخلية: south، west، north، east بالدرجات العشرية. |
الأخطاء
| الحالة | متى |
|---|---|
400 | code مفقود أو ليس رمز Plus Code صالحًا، أو رمز قصير مُمرَّر دون مرجع lat/lng صالح للاستخدام. |
401 / 403 | مفتاح مفقود/غير صالح، أو يفتقر المفتاح إلى النطاق geo. |
GET /geo/address
حلّ إحداثية إلى حزمة العنونة الكاملة — كل ما يحتاجه التطبيق لعرض ومشاركة عنوان مألوف للبشر لنقطة معيّنة. هذه هي النقطة النهائية المُوصى بها لعنونة المنطقة: تجمع في استدعاء واحد الرمز العالمي، والرمز المحلي، واسم المنطقة، وعنوانًا محليًا جاهزًا للعرض localAddress، ورابطًا قابلًا للمشاركة.
النطاق المطلوب: geo
معاملات الاستعلام
8–11. الافتراضي 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"
}
| الحقل | النوع | الوصف |
|---|---|---|
provider | string | دائمًا navvo-addressing. |
lat / lng | number | الإحداثية المُدخلة، مُعادة كما هي. |
plusCode | string | الرمز الكامل الفريد عالميًا (يُحلّ في أي مكان دون سياق). |
shortCode | string | الرمز المحلي المختصر (يُسقِط بادئة المنطقة؛ اقترِنه بـ locality للاستخدام اليومي). |
locality | string | أقرب منطقة مُسمّاة، مثل عبدون، عمّان. |
localAddress | string | عنوان محلي جاهز للعرض يجمع shortCode + locality، مثل XW36+H6 عبدون، عمّان. |
shareUrl | string | رابط أساسي يفتح النقطة على Navvo. |
عبدون، عمّان)، فتُقرأ localAddress بشكل طبيعي بالعربية. أما plusCode نفسه فمستقل عن اللغة، لذا يبقى قابلًا للمشاركة عبر جميع اللغات.الأخطاء
| الحالة | متى |
|---|---|
400 | lat/lng مفقود أو غير رقمي، أو length خارج النطاق 8–11. |
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 }'
| الحقل | النوع | ملاحظات |
|---|---|---|
points | array | مطلوب — كائنات { lat, lng } (أو lon)، حتى 50 |
length | number | طول Plus Code اختياري 8–11 يُطبَّق على الجميع |
{
"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
معاملات الاستعلام
10.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"
}
]
}
| الحقل | النوع | الوصف |
|---|---|---|
provider | string | دائمًا navvo-geocode. |
query | string | الاستعلام الأصلي، مُعادًا كما هو. |
normalizedQuery | string | undefined | الصيغة المُطبَّعة/المنقولة حرفيًا التي طابَق عليها Navvo فعليًا (تظهر عند إعادة كتابة الإدخال، مثل العربيزي ← العربية). |
suggestions | array | المرشّحون مرتّبون (انظر أدناه). مصفوفة فارغة عند عدم وجود تطابق. |
suggestions[].id | string | معرّف ثابت للمكان المُقترَح. |
suggestions[].label | string | تسمية العرض، منسّقة وفق locale المطلوب. |
suggestions[].name | string | الاسم الأساسي للمكان. |
suggestions[].lat / lng | number | إحداثية الاقتراح. |
suggestions[].type | string | النوع الدقيق (مثل road، city، suburb، poi). |
suggestions[].category | string | الفئة العامة (مثل highway، place، amenity). |
label في القائمة المنسدلة، لكن احسم الاختيار عبر id (و lat/lng) — فالتسميات مُترجَمة وقد تختلف بين اللغات. وعند وجود normalizedQuery يمكنك إظهاره كتلميح "يجري البحث عن…" ليرى المستخدمون كيف فُسِّر العربيزي الخاص بهم.الأخطاء
| الحالة | متى |
|---|---|
400 | q مفقود/فارغ، أو limit غير رقمي. |
401 / 403 | مفتاح مفقود/غير صالح، أو يفتقر المفتاح إلى النطاق geocode. |