Leaflet проблема с координатами

Обсуждение около-картографических и прочих программ и тем, напрямую не связанных с SAS.Планета

Модератор: Tolik

Ответить
lyrion
Новичок
Сообщения: 5
Зарегистрирован: 26 фев 2018, 10:39
Благодарил (а): 1 раз

Leaflet проблема с координатами

Сообщение lyrion »

Что было сделано:
Из кэша SasPlanet вытащил тайлы карты OSM. С помощью библиотеки Leaflet вывел карту на страницу, код следующий:

Код: Выделить всё

<div id='map'></div>
JS файл:

Код: Выделить всё

var osm = L.tileLayer('./map/OsmCircle/{z}/{dop}/{x}/{dop}/{y}.png',{ maxZoom: 15, dop: '0' }); 	
var map = L.map('map',{center: [76.5, -48.5], zoom:5, layers: osm});
var baseLayers = {"Open Street Map": osm};
L.control.layers(baseLayers).addTo(map);
L.control.mousePosition().addTo(map);
Все работает, карта отображается, но координаты в корне неверные.
Я отображаю их через плагин MousePosition, который работает на родном методе Leaflet: latlng.

Если судить по плагину то координаты 0;0 моей карты находятся в правом нижнем углу, например координаты Москвы 76; -72;
Как можно увидеть проблема даже не в отрицательных числах, длинна всей карты координатам так же равна 180, а высота ~85, дело в том что координаты судя по всему отображаются без учета кривизны планеты, просто как линейные.

Подскажите пожалуйста, как это можно исправить.
lyrion
Новичок
Сообщения: 5
Зарегистрирован: 26 фев 2018, 10:39
Благодарил (а): 1 раз

Re: Leaflet проблема с координатами

Сообщение lyrion »

Итак, разобрался сам. Посмотрел на свою карту в режиме разработчика и увидел, что на масштабах от 1 до 3 LeafLet достраивает серые тайлы. Посчитал их количество и пришел к следующему выводу:
Дело в том, что масштабы в кеше SasPlanet начинаются с z1 а в LeafLet с 0.

Нужно было просто поставить соответствие z1 - 0 , z2 -1 и т.д. Из за отстутсвия нужных тайлов LeafLet стал мудрить с координатами, теперь все нормально и появилась "бесконенчость" карты, т.е. тайлы по мере прокрутки направо достраиваются снова.

P.s.Советую так же на крупных масштабах выводить маркер в точке 0;0, он должен встать в точке пересечения экватора и нулевого мередиана, если все так,то и отсчёт будет верным.
Ответить

Вернуться в «Болталка»