У меня есть очень простой кусок JavaScript Leaflet, работающий на моем общем хосте.Простая версия кода выглядит следующим образом:
var osmLink = '<a href="http://openstreetmap.org">OpenStreetMap</a>',
x1860Link = '<a href="http://1860map.org">1860 map</a>',
xNLSLink = '<a href="http://geo.nls.uk/maps/">National Library of Scotland</a>';
var osmUrl = 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
osmAttrib = '© ' + osmLink + ' Contributors',
x1860Url = 'http://www.1860.org/1860/{z}/{x}/{y}.jpg',
x1860Attrib = '© '+osmLink+' Contributors & '+x1860Link,
xNLSUrl = 'https://nls.tileserver.com/nls/{z}/{x}/{y}.jpg',
xNLSAttrib = '© '+osmLink+' Contributors & '+xNLSLink;
var osmMap = L.tileLayer(osmUrl, {attribution: osmAttrib}),
x1860Map = L.tileLayer(x1860Url, {attribution: x1860Attrib}),
xNLSMap = L.tileLayer(xNLSUrl, {attribution: xNLSAttrib});
var baseLayers = { 'OpenStreetMap': osmMap,
'1860': x1860Map,
'1940': xNLSMap
};
L.control.layers(baseLayers, overlays).addTo(map);
Сервер плиток 1860 года - это историческая карта с тайлами до уровня 17, в очень немногих случаях до уровня 18, но в большинстве случаев нет.
Точно так же карта NLS уменьшается до 18-го масштаба, в основном до 17-го масштаба, но только в Лондоне, Англия.
Одним из решений было бы создание фиктивных плиток на уровне 18, некоторые на уровне 17 и ограничениеобласть до Лондона.
Но я хочу сэкономить пространство inode плитки.
Итак: IF 1860 плитка не существует, ТО загружать версию OSM той же плитки
IF плитка NLS делаетне существует ТОГДА загрузить версию OSM той же плитки
И я мог бы добавить больше слоев (больше истории в разные годы), чтобы она работала одинаково для всех.Для других есть очень хорошее решение - запасной вариант, который берет уровень масштабирования выше и отображает его.
Но у меня есть 1860 карт, которые заканчиваются на краю Лондона и перезапускают (тот же сервер плиток) на 100 миль, чтобына северо-западе в городе Бирмингем.То же самое с другими городами.Но нажмите на Оксфорд, между городами, и нет карты 1860, которую можно рендерить даже при более высоком уровне масштабирования.
В итоге: множество недостающих плиток, которые я хочу, чтобы в случае обнаружения их отсутствовало, заменялось эквивалентом OSM, а не уровнем увеличения, указанным выше, поскольку его может и не быть.
Увына моем хосте я не могу установить пакеты из Github и т. д. Это должно быть как-то решение javascript, легко интегрируемое в существующий код.