Вопрос не по OSM - просто на работе поставили задачу сделать онлайн-карту на основе собственных карт. Взял Leaflet, порезал карту на плитки, всё работает нормально.
Теперь же я пытаюсь сообразить: как научить Leaflet использовать не пиксельные координаты карты, а географические (широту/долготу). Проблема в том, что карты охватывают большой кусок поверхности:
Поэтому обойтись простым смещением и масштабированием не получится, надо использовать трансформации. А как их использовать - не могу понять. Вроде для этого нужно использовать L.Projection.SphericalMercator, но понятных примеров для своих карт найти не могу. В лучшем случае попадается что-то вроде такого (с использованием библиотеки Proj.4js):
var proj = new L.Proj.CRS.TMS('EPSG:3414', "+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs",
[4257.9355, 11470.3186, 64359.3062, 49067.5413],
{
resolutions:[76.4372195411057,38.2186097705529,19.1093048852764,9.55465244263822,4.77732622131911,2.38866311065955,1.19433155532978,0.597165777664889,0.298450596901194]
}
);
но откуда берутся все эти параметры непонятно, везде подразумевается, что это и так очевидно.
Подскажите, пожалуйста, есть ли какие-то статьи, где более-менее понятно разжёвывается этот кейс для программистов, которые новички в картографии? Или, может, где-то есть несложный пример, где для своей карты (не OSM, Google, Яндекс и пр.) делается эта операция?
Спасибо!