@trailstash/ultra
Version:
A web based tool for making MapLibre GL maps with data from sources such as Overpass, GeoJSON, GPX, KML, TCX, etc
50 lines (41 loc) • 1.1 kB
JavaScript
import EsriDump from "esri-dump";
import YAML from "yaml";
import { geoJsonLayers as layers } from "./common.js";
async function detect(query) {
const url = new URL(query);
return !!url.pathname.match(/\/(Map|Feature)Server\/\d+$/);
}
export default {
source: function geojson(query, controller, { server }) {
return new Promise((resolve, reject) => {
let esri;
if (server) {
const params = YAML.parse(query);
esri = new EsriDump(server, { params });
} else {
esri = new EsriDump(query);
}
const data = {
type: "FeatureCollection",
features: [],
};
esri.fetch();
esri.on("type", (type) => {
//Emitted before any data events
//emits one of
// - `MapServer'
// - `FeatureServer'
});
esri.on("feature", (feature) => {
data.features.push(feature);
});
esri.on("done", () => {
resolve({ type: "geojson", data, generateId: true });
});
esri.on("error", reject);
});
},
fitBounds: true,
layers,
detect,
};