تطبيقات سطح المكتب (Windows/macOS/Linux)
تطبيقات سطح المكتب (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
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 م.ب):
-
npm create tauri-app@latest(قالب vanilla) وانسخ الملفين إلىsrc/. - استبدل مسارات
./node_modules/@navvo/maps-js/dist/…بنسخ محلية منnavvo-maps.umd.jsوnavvo-maps.css(كلاهما متاح على docs.navvo.io/sdks). - اسمح بـ
https://navvo.ioفيsrc-tauri/tauri.conf.json← app.security.csp(connect-srcوimg-src). -
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 ظاهرًا. وإذا كنت تعرض نمط satellite فيجب أن تُظهر أيضًا إسناد مزوّد الصور إلى جانبه — راجع بلاطات الخريطة والأنماط ← الإسناد.حزمة React Native
تثبيت واستخدام @navvo/react-native-maps — مكوّن NavvoMapView مع عميل NavvoServices كامل الأنواع للبحث والترميز الجغرافي والأماكن والتوجيه والمزيد.
تحليلات البحث والخصوصية
ما الذي تسجّله Navvo عند استدعاء البحث، وكيف تعمل الموافقة والجلسات، وخيارات إلغاء الاشتراك، ومدة الاحتفاظ بأي شيء، وكيف ترسل أحداث النقر.