@trailstash/ultra
Version:
A web based tool for making MapLibre GL maps with data from sources such as Overpass, GeoJSON, GPX, KML, TCX, etc
42 lines (40 loc) • 896 B
JavaScript
import { fetchIfHTTP } from "./util.js";
const layers = (source) => [
{
id: `${source}-raster`,
type: "raster",
source,
},
];
const IMAGE_FORMATS = new Set(["webp", "png", "jpg"]);
const detect = async (query) => {
query = query.trim();
if (query.includes("{bbox-epsg-3857}")) {
return true;
}
if (query.match(/{(x|y|z)}.*\.(png|webp|jpe?g)$/)) {
return true;
}
query = await fetchIfHTTP(query);
try {
const json = JSON.parse(query);
return json.tilejson && IMAGE_FORMATS.has(json.formati);
} catch {}
};
export default {
source: (query) => {
const source = {
type: "raster",
layers,
};
if (query.match(/{(x|y|z|bbox-epsg-3857)}/)) {
source.tiles = query.split("\n").filter((x) => !!x);
source.tileSize = 256;
} else {
source.url = query.trim();
}
return source;
},
layers,
detect,
};