geokernel-electron
v1.5.26
Published
Electron bindings for the GeoKernel GIS SDK.
Maintainers
Readme
GeoKernel Electron
Electron bindings for the GeoKernel GIS SDK.
npm install geokernel-electronconst { app } = require("electron");
const { ViewerTool, ViewerWindow } = require("geokernel-electron");
app.whenReady().then(() => {
const viewer = new ViewerWindow({
title: "HelloMap",
width: 1200,
height: 800,
iconDirectory: "D:\\my-app\\Images",
});
viewer.setActivationType("Developer");
viewer.addLayer("D:\\data\\world_4326.shp");
viewer.setMapStyle("midnight-blue");
viewer.setTool(ViewerTool.PAN);
viewer.show();
viewer.fullExtent();
viewer.runUntilClosed(() => app.quit());
});iconDirectory points to an application-owned directory containing the
GeoKernel toolbar icons and GeoKernelAppIcon.ico. Icons are intentionally
not bundled in this package, so applications can ship and customize their own
icon set. The same directory can alternatively be supplied through the
GEOKERNEL_ICON_DIR environment variable before creating a ViewerWindow.
Public API
The package exposes both a convenient ViewerWindow API and the raw native binding layer.
const { ViewerWindow, ShapeType, createNativeLibrary } = require("geokernel-electron");
const viewer = new ViewerWindow({ title: "GeoKernel" });
viewer.addLayerFile("D:\\data\\world_4326.shp", { coordinateSystem: "EPSG:4326" });
viewer.addOpenStreetMapLayer();
viewer.addEmptyVectorLayer("Drawings", ShapeType.POLYGON);
viewer.setLayerVisible(0, true);
viewer.zoomToLayer(0);
viewer.addControlPanel({
title: "Routes",
controls: [{ id: 1, type: "combo", label: "Route", options: [] }],
}, (_id, _number, text) => console.log(text));
viewer.setControlOptions(1, ["Route 1", "Route 2"]);
viewer.setControlEnabled(1, true);
viewer.setCommandEnabled(10, false);
viewer.addTextShape(28.97, 41.01, "1", { textColor: "#FFFFFF", bold: true });
// Lightweight named overlays update without invalidating map-layer caches.
viewer.setOverlayPoint("vehicle", 28.97, 41.01, {
pointColor: "#2563EB", lineColor: "#1E3A8A", pointSize: 20, lineWidth: 2,
});
viewer.removeOverlayShape("vehicle");
viewer.clearOverlayShapes();
const native = createNativeLibrary();
console.log(native.getFunction("GeoKernelViewer_GetLayerCount"));Coverage
npm run generate:native
npm run coverage
npm run verify:nativenpm run coverage compares the Electron bindings with GeoKernel.Viewer/Interop/InteropBridge.h.
npm run verify:native loads GeoKernel.Viewer.dll and verifies that every bound export exists.
