Navvo
الأدلّة

تطبيقات سطح المكتب (Windows/macOS/Linux)

شحن خرائط Navvo داخل تطبيقات سطح مكتب أصلية على Windows وmacOS وLinux عبر Electron أو Tauri فوق @navvo/maps-js — مع نموذج جاهز قابل للتشغيل.

تطبيقات سطح المكتب (Windows · macOS · Linux)

المسار الرسمي لسطح المكتب هو حزمة الويب من Navvo ‏(@navvo/maps-js): فهي تضمّ محرك العرض GL داخلها، بدون أي اعتماديات تشغيل، ولا تتواصل إلا مع https://navvo.io — لذا فإن أي غلاف سطح مكتب يستضيف عرض ويب (Electron أو Tauri أو WebView2 أو WKWebView) يحصل على المنصة كاملة: الخرائط الأساسية، الدبابيس، GeoJSON، طبقات حركة المرور/الحوادث/الطقس الحية، وكل استدعاءات NavvoServices.

يوجد نموذج Electron مصغّر قابل للتشغيل على docs.navvo.io/sdks ‏(navvo-desktop-sample-0.1.0.tar.gz، مكتفٍ ذاتيًا — حزمة الويب مضمّنة داخله):

tar xzf navvo-desktop-sample-0.1.0.tar.gz && cd navvo-desktop-sample
npm install
# ضع مفتاحك (nvvo_…) في renderer.js → NAVVO_API_KEY
npm start
وفّر مفتاح الواجهة. بدون مفتاح تُعرض الخريطة بعلامة مائية "Navvo Map Developer (Provide Your API Key)". تُنشأ المفاتيح من navvo.io/developer؛ اشحن مفتاحًا مخصصًا بأقل الصلاحيات (tiles، search، geocode، routing) — فملف سطح المكتب قابل للفحص مثل ملف الهاتف تمامًا.

أساسيات Electron

النموذج ثلاثة ملفات. العملية الرئيسية (نافذة مُحصَّنة):

const { app, BrowserWindow } = require('electron');

app.whenReady().then(() => {
  const win = new BrowserWindow({
    width: 1280, height: 800,
    webPreferences: { contextIsolation: true, nodeIntegration: false, sandbox: true },
  });
  win.loadFile('index.html');
});

صفحة العرض (ويب عادي — حزمة UMD تعرّف المتغيّر العام NavvoMaps):

<link rel="stylesheet" href="./node_modules/@navvo/maps-js/dist/navvo-maps.css" />
<script src="./node_modules/@navvo/maps-js/dist/navvo-maps.umd.js"></script>
<script>
  const map = new NavvoMaps.Map({
    container: 'map',
    apiKey: 'nvvo_YOUR_KEY',
    style: 'standard',            // standard | positron | dark | satellite | terrain | 3d
    center: [35.9106, 31.9539],   // [lng, lat] — عمّان
    zoom: 12,
  });
  map.addControl(new NavvoMaps.NavigationControl(), 'top-right');

  const services = new NavvoMaps.NavvoServices({ apiKey: 'nvvo_YOUR_KEY' });
</script>

أحكم إغلاق الصفحة بسياسة CSP لا تسمح إلا بـ Navvo:

<meta http-equiv="Content-Security-Policy" content="
  default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline';
  img-src 'self' data: blob:; connect-src 'self' https://navvo.io;
  worker-src 'self' blob:; child-src blob:;" />

حزم التثبيت (electron-builder)

يشحن النموذج إعداد electron-builder جاهزًا (appId: io.navvo.desktop.sample):

npm run dist:win     # Windows → مثبّت NSIS ‏(.exe)
npm run dist:mac     # macOS   → ‏.dmg (وقّع ووثّق للتوزيع)
npm run dist:linux   # Linux   → AppImage (أضف deb/rpm حسب الحاجة)

يجب بناء إصدارات macOS على macOS؛ أما مثبّتات Windows فيمكن بناؤها من أنظمة أخرى. لا تحتاج الخريطة أي صلاحيات نظام خاصة — فهي محتوى ويب عبر HTTPS فقط.

بديل Tauri (ملفات أصغر)

يعمل نفس index.html + renderer.js دون تغيير في Tauri الذي يستخدم عرض الويب الخاص بنظام التشغيل بدلًا من تضمين Chromium (تطبيقات بحجم ≈ 5–10 م.ب):

  1. npm create tauri-app@latest (قالب vanilla) وانسخ الملفين إلى src/.
  2. استبدل مسارات ./node_modules/@navvo/maps-js/dist/… بنسخ محلية من navvo-maps.umd.js وnavvo-maps.css (كلاهما متاح على docs.navvo.io/sdks).
  3. اسمح بـ https://navvo.io في src-tauri/tauri.conf.json ← ‏app.security.csp ‏(connect-src وimg-src).
  4. npm run tauri build ← حزم أصلية .msi / .dmg / .deb / .AppImage.

أي حزمة لأي حالة سطح مكتب؟

الحالةاستخدم
تطبيق سطح مكتب بخريطة ظاهرة@navvo/maps-js داخل Electron/Tauri (هذا الدليل)
تطبيق macOS فقط مع قاعدة شيفرة iOS قائمةحزمة iOS عبر مصمَّم لـ iPad (راجع دليل iOS)
أداة سطح مكتب/سطر أوامر بلا خريطةحزم الخوادم — Node، Python، Go، Java
تُعرض الخريطة عبر محرك مفتوح المصدر مضمّن داخل @navvo/maps-js — لا تتعامل إلا مع أصناف Navvo ونقاط نهاية Navvo، ويجب أن يبقى إسناد © Navvo ظاهرًا.
Copyright © 2026