OSMTileProxy — это прокси-сервер кэширования для фрагментов карты от Openstreetmap или другого поставщика фрагментов карты.
Он предоставляет конечную точку /tiles/{provider}/{level:int}/{x:int}/{y:int}, возвращающую изображение для заданных координат плитки. Сначала он загружает тайл от провайдера, сохраняет его в дисковом кеше, а затем использует этот образ до истечения срока его действия.
Раздел конфигурации Tiles в файле appsettings.json содержит все необходимое для проксирования и кэширования.
"Tiles": {
"Cache": "/var/www/tiles",
"Providers": [
{
"Id": "osm",
"Url": "https://tile.openstreetmap.org/{0}/{1}/{2}.png",
"UserAgent": "Your-user-agent",
"ContentType": "image/png",
"UseWebp": false,
"MinZoom": 1,
"MaxZoom": 19
}
]
}
Ниже приведены пояснения к параметрам раздела.
Cache — папка, в которой кэшируются плитки, в конфигурации разработки appsettings.Development.json это c:temptiles, убедитесь, что c:temp существует, или укажите другое местоположение.
Providers - массив параметров провайдера.
Providers:[i]:Id — произвольный идентификатор провайдера, используемый в конечной точке, например /osm/2/1/1.
Providers:[i]:Url — шаблон конечной точки поставщика, где {0} — уровень (масштаб карты), {1} — координата X плитки, {2} — координата Y плитки.
Providers:[i]:UserAgent — обязателен для сервиса Openstreetmap, укажите свой уникальный User-Agent.
Providers:[i]:ContentType — значение заголовка Content-Type в ответе. Если UseWebp (см. ниже) имеет true для этого заголовка всегда установлено значение image/webp.
Providers:[i]:UseWebp — необязательный параметр (значение по умолчанию — false ). Если true , OSMTileProxy преобразует изображения плиток в формат WebP.
Providers:[i]:MinZoom — необязательный параметр (значение по умолчанию — 1). Указывает минимальный уровень масштабирования для поставщика плиток, используемый для проверки.
Providers:[i]:MaxZoom — необязательный параметр (значение по умолчанию — 19). Указывает максимальный уровень масштабирования для поставщика плиток, используемый для проверки.
Если развернуто как Docker-контейнер, привяжите каталог кеша к вашему контейнеру, например.
docker run -p 8080:8080 --name osmtileproxy -v /var/www/tiles:/var/www/tiles -d osmtileproxy:latest