1.9 KiB
1.9 KiB
2026-09-20 — Тайловый сервер на C#
Собрано с нуля: ASP.NET Core 8, Clean Architecture.
Что сделано
- Воркер
MapSyncHostedService: cron раз в сутки (0 3 * * *UTC) + прогон при старте. - Для каждого extract из
TileServer:Extracts(иdata/extracts.json): скачивание.osm.pbfс Geofabrik (If-None-Match / 304), сборка OpenMapTiles MBTiles черезplanetiler-openmaptiles(Java 21+). - По умолчанию один источник:
central-fed-district. Можно добавлять сколько угодно регионов — воркер проходит все по очереди. GET /api/v1/tiles/{source}/{z}/{x}/{y}.pbf— MapLibre XYZ, TMS Y-flip, gzip как в MBTiles.GET /api/v1/styles/{name}?source=...— стили по имени;PUTи файлыdata/styles/*.json.- Демо:
GET /MapLibre GL, выбор источника/стиля, статус воркера. - Сборка тайлов не на чистом C#: генерация схемы OpenMapTiles — Planetiler. C# оркестрирует download/build/serve.
Как проверялось
dotnet build/ 9 unit-тестов — ок.- Локальный прогон API: демо 200, стили osm-bright/dark/positron, TileJSON, 204 на отсутствующий тайл, PUT второго extract, 404 на неизвестный стиль.
- Браузерных MCP в сессии не было — проверка через HTTP.
Важно для следующего запуска
- Без Java 21 воркер скачает PBF, но не соберёт тайлы.
- Первая сборка ЦФО — часы и много диска/RAM (
TileServer:JvmMaxHeap). TileServer:Sync:RunOnStartupпо умолчаниюtrue.