mirror of
https://github.com/maplibre/martin.git
synced 2024-12-24 15:34:51 +03:00
66b7fdc4ea
Partial implementation of the #430 * New endpoint structure: * `GET /` -- a placeholder for the future home page * `GET /catalog` -- get a list of available sources, as a list of json blobs. * `[{id, name, description, attribution, vector_layer}, ...]` (some fields might be missing) * `GET /<id>` -- get tilejson for the given source, or a combination of sources. No `.json` extension * `GET /<id>/<z>/<x>/<y>` -- get a tile. No format extension. * `GET /health` -- healthcheck * Introduce a new tile format support crate (using code from the maplibre/mbtileserve project) * Removed the `/rpc/...` routes - all source IDs are accessed in the same way * Can print auto-generated configuration or save it to a file * Refactored to support multiple sources from multiple backends, with a proper naming conflict resolution TODO: * benchmarks need to be rewritten - they were relying on some internal structures that are no longer there. This might be done as a separate PR due to a very different internal architecture - might need to rethink benchmarking approaches.
73 lines
1.6 KiB
HTML
73 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>Martin Debug Page</title>
|
|
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
|
|
<script src="https://unpkg.com/maplibre-gl@2.1.9/dist/maplibre-gl.js"></script>
|
|
<link href="https://unpkg.com/maplibre-gl@2.1.9/dist/maplibre-gl.css" rel="stylesheet" />
|
|
|
|
<style>
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
#map {
|
|
position: absolute;
|
|
top: 0;
|
|
bottom: 0;
|
|
width: 100%;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="map"></div>
|
|
|
|
<script>
|
|
const map = new maplibregl.Map({
|
|
container: 'map',
|
|
style: 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',
|
|
zoom: 0,
|
|
center: [0, 0]
|
|
});
|
|
|
|
map.on('load', function () {
|
|
map.addSource('points', {
|
|
type: 'vector',
|
|
url: `http://0.0.0.0:3000/points1,points2`
|
|
});
|
|
|
|
map.addLayer({
|
|
id: 'red_points',
|
|
type: 'circle',
|
|
source: 'points',
|
|
'source-layer': 'points1',
|
|
paint: {
|
|
'circle-color': 'red'
|
|
}
|
|
});
|
|
|
|
map.on('click', 'red_points', function (event) {
|
|
console.log(event.features);
|
|
});
|
|
|
|
map.addLayer({
|
|
id: 'blue_points',
|
|
type: 'circle',
|
|
source: 'points',
|
|
'source-layer': 'points2',
|
|
paint: {
|
|
'circle-color': 'blue'
|
|
}
|
|
});
|
|
|
|
map.on('click', 'blue_points', function (event) {
|
|
console.log(event.features);
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|