Existing ArcGIS Maps SDK for JavaScript code runs against
Honua Server with minimal or zero changes. The
esri-compat shims accept the same FeatureLayer,
Search, and map.add() calls; the
honua-migrate codemod optionally rewrites them to the native
@honua/sdk-js equivalent. Same app, same Maui zoning layer — the
live map on the right is the migrated code running.
// widgets pointed at an ArcGIS FeatureServer
import FeatureLayer from "@arcgis/core/layers/FeatureLayer";
import MapView from "@arcgis/core/views/MapView";
import Search from "@arcgis/core/widgets/Search";
const zoning = new FeatureLayer({
url: "https://demo.honua.io/rest/services/" +
"maui-zoning/FeatureServer/0",
outFields: ["*"],
});
map.add(zoning);
const view = new MapView({ container: "map", map });
view.ui.add(new Search({ view }), "top-right");
// same widget names, resolved by the esri-compat shim —
// or the codemod rewrites to native @honua/sdk-js:
import { FeatureLayer, MapView, Search }
from "@honua/sdk-js/esri-compat";
const zoning = new FeatureLayer({
// OGC API Features items — native GeoJSON
url: "https://demo.honua.io/ogc/features/" +
"collections/maui-zoning",
outFields: ["*"],
});
map.add(zoning); // unchanged
const view = new MapView({ container: "map", map });
view.ui.add(new Search({ view }), "top-right");
The shim maps ArcGIS widget idioms onto Honua's protocol surfaces —
FeatureLayer.url resolves to GeoServices REST or
/ogc/features/collections/…/items (GeoJSON), and
map.add() / Search behave as before. The map on
the right renders maui-zoning loaded from that OGC items
endpoint — the migrated code, live.