progserega
(Progserega)
August 21, 2019, 7:12am
#1
Пытаюсь прикрутить слой покрытия мегафона и МТС, но они как-то не совпадают со слоем ОСМ и между собой. Можно ли как-то в леафлете ввести поправки?
Возможно они затачивались как-то под yandex-карты и у них какая-то иная система координат…
Вот так подключаю в леафлет (на самом деле в форк openstreetmap.ru ):
// мегафон
osm.registerLayer(
'megafon',
new L.TileLayer('https://coverage-map.megafon.ru/{z}/{x}/{y}.png', {
maxZoom: 20,
layers: '2g,lte,lte_plus',
attribution: "Данные Мегафон",
transparent: 'true',
opacity: 1,
}),
'Покрытие Мегафон',
'D',
false
);
// МТС
osm.registerLayer(
'mts',
new L.TileLayer('http://tiles.mts.ru/G3_New/{z}/{x}/{y}', {
maxZoom: 20,
attribution: "Данные МТС",
transparent: 'true',
opacity: 1,
}),
'Покрытие МТС',
'P',
false
);
Мегафон - сдвинут:
МТС - сдвинут и уменьшен:
В Leaflet можно указать кастомную проекцию, попробуй туда он яндекса (где Земля эллипс) засунуть.
progserega
(Progserega)
August 21, 2019, 8:11am
#3
В интернете пишут, что это:
crs = L.CRS.EPSG3395;
Я не спец в Leaflet - прошу прощения. Но как я понял проекцию можно указать карте, не слою. А у меня другие слои же тогда поедут?
При создании слоя (как пишут: https://www.wrld3d.com/wrld.js/latest/docs/leaflet/L.TileLayer/ ) нет опции указания проекции (crs).
Вот вроде нужная стать я. На гитхабе в отдельной ветке есть код с поддержкой для TMS своей проекции.
progserega
(Progserega)
August 22, 2019, 4:22am
#5
Спасибо!
Направление ясно.
Хотя боль какая-то:
Поставил код из ветки. Но это оказывается не пропатченный код, а просто отдельный проект. Скопировал Proj4Leaflet отдельно, переключился на master, подключил оба. Proj4js требует. Порылся - нашёл proj4, но оно не Proj4js. Переименовал в коде плагина в proj4. Запускаю - падает - говорит переданная проекция ESPG:900913 не нравится:
uncaught exception: EPSG:900913 proj4-src.js:1404:8
callback http://dev.map.prim.drsk.ru/js/proj4js-2.5.0/dist/proj4-src.js:1404
Projection http://dev.map.prim.drsk.ru/js/proj4js-2.5.0/dist/proj4-src.js:1409
initialize http://dev.map.prim.drsk.ru/js/Proj4LeafletTMS/src/proj4leaflet.js:9
e http://dev.map.prim.drsk.ru/js/leaflet.js:5
initialize http://dev.map.prim.drsk.ru/js/Proj4LeafletTMS/src/proj4leaflet.js:35
e http://dev.map.prim.drsk.ru/js/leaflet.js:5
initLayers http://dev.map.prim.drsk.ru/js/page.map/osm.layers.js:171
<анонимный> http://dev.map.prim.drsk.ru/js/page.map/_map.js:4
jQuery 4
в общем нужно погружаться в глубь и ковырять и ковырять потроха этих либ и надстроек, т.к. судя по всему они уже расплылись по версиям далеко и несовместимы
Вместо 900913 надо использовать 3857.