Как выставить координаты для тайлов в Leaflet.js?

Всем привет! У меня есть карта на leaflet.js размер карты 5913x7863 и она в местных плоских координатах (X Y) система координат соответственно L.CRS.Simple

До этого я использовал L.imageOverlay:

var imageBounds = [[1468.9700,-11.7050], [1968.2705,363.7705]];
var file0 = new L.imageOverlay(imageUrl, imageBounds).addTo(map);

И всё было супер
Но я понял, что это плохой путь (единая картинка вылетает на мобилках и так карты не делают) и нужно делать тайлы

Далее я нарезал на тайлы
Тайлы хранятся по папкам "1/1/0" "1/1/1" и т.д.
Я хочу сделать координаты X Y - чтобы карта была в координатах [1468.9700,-11.7050], [1968.2705,363.7705]
Но как сделать даже в координатах [0,0] [5913,7863] я не понимаю.

Код сейчас такой:
map = L.map('map', {
          crs: L.CRS.Simple,
            maxZoom: 4,
            minZoom: 0
        }).setView([-60,100], 1);
 
L.tileLayer('./images/{z}/{x}/{y}.png', {
            continuousWorld: true,
            noWrap: false
        }).addTo(map);


При этом картинка находится в координатах примерно [0,0], [-256,192] - почему именно такие не понимаю вообще.
Еще раз вопрос: как сделать границы именно [1468.9700,-11.7050], [1968.2705,363.7705]?
Почему это так легко сделать в L.imageOverlay и так трудно в L.tileLayer?

Пожалуйста, любые идеи. Мучаюсь уже 2 месяца
  • Вопрос задан
  • 3034 просмотра
Решения вопроса 1
@fynjy_8 Автор вопроса
Moskus спасибо за комментарии

Сумел воплотить задуманное в openlayers

var mapBounds = new OpenLayers.Bounds(-11.705000, 1468.971000, 363.770500, 1968.271500);
var mapMinZoom = 0;
var mapMaxZoom = 5;
var mapMaxResolution = 0.063500;
var gridBounds = new OpenLayers.Bounds(-11.705000, 1468.971000, 363.770500, 1968.271500);


Вопрос теперь как сделать такое в leaflet :) Я так понимаю простыми манипуляциями не выйдет, нужно пользоваться Proj.4 и Proj4Leaflet, там вообще есть условная местная система координат?

UPD: РЕШЕНИЕ

L.CRS.Wall = L.extend({}, L.CRS.Simple, {
  transformation: new L.Transformation(0.4920000014213405, 5.758860016636791, -0.4920000014213405, 968.389580797584),

    
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Moskus
@Moskus
Самый простой путь присвоить какие-либо координаты растровому файлу - создать для него так называемый World-файл https://en.wikipedia.org/wiki/World_file
Это текстовый файл, в котором вам нужно заполнить не нулями всего четыре строчки:
- разрешение по оси X (разность крайней правой и крайней левой координаты растра, деленная на число пикселей по оси X)
- ноль
- ноль
- разрешение по оси Y (разность крайней нижней и крайней верхней координаты растра, деленная на число пикселей по оси Y, традиционно - отрицательное число, потому что ось идет снизу вверх)
- координаты центра верхнего левого пикселя по X
- координаты центра верхнего левого пикселя по Y

Далее, вам надо приложить к своему растру еще один файл - файл описания проекции, с тем же именем, что и растр, но с расширением .prj - скачайте его отсюда spatialreference.org/ref/epsg/popular-visualisatio...

Далее вам остается только правильно скормить это www.gdal.org/gdal2tiles.html либо www.maptiler.com и получить искомые тайлы, которые дальше вы сможете подключить к Leaflet, будто у них есть реальные координаты.
Ответ написан
honor8
@honor8
Принципы быстродействия VBA в описании
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы