@lyrion

Как исправить координаты на кастомной карте Leaflet?

Что было сделано
Из кэша SasPlanet вытащил тайлы карты OSM (Open Street Map). С помощью библиотеки Leaflet вывел карту на страницу:
<body>
  <div id='map'></div>
  <script src="./script.js"></script>
</body>

Код 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);

Карта отображается, но координаты в корне неверные. Например координаты Москвы 76; -72;
Пользуясь стандартным выводом широты и долготы Leaflet( latlng) я определил, что точка 0:0 находится в провом нижнем углу карты.

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

Подскажите как это можно исправить
  • Вопрос задан
  • 595 просмотров
Решения вопроса 1
@lyrion Автор вопроса
Итак, разобрался. Спасибо за совет Moskus он натолкнул меня на нужные мысли.

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

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

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

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

Похожие вопросы