У меня есть простые данные GeoJSON, которые мне нужно отобразить на карте листовок с помощью L.CRS.Simple crs, потому что это антимеридиональные данные, а иногда координаты могут быть [450,389] (более 180)
Это очень простой GeoJSON:
{
"type": "FeatureCollection",
"name": "entities",
"features": [
{
"type": "Feature",
"properties": {
"Layer": "0",
"SubClasses": "AcDbEntity:AcDbPolyline",
"EntityHandle": "1F9",
"style": "PEN(c:#FF0000)"
},
"geometry": {
"type": "LineString",
"coordinates": [
[
0,
0
],
[
0,
150
],
[
150,
150
],
[
150,
0
],
[
0,
0
]
]
}
}
]
}
Используя geojson-vt, (демонстрационная страница) я получаю этот прямоугольник:
Я внес некоторые изменения в geojson-vt lib:
Функции проецирования:
function projectX(x, simple, projectionFactor) {
return x / 256 + 1;
}
function projectY(y, simple, projectionFactor) {
return - y / 256 + 0.5;
}
Я добавил в функцию GeoJSONVT.prototype.getTile
эту строку:
y = y + (1 << (z - 1)); // xy map
И результат (маркеры ставятся на [0,0], [150,0], [150,150], [0,150]):
Любое предложение? Почему я теряю здесь плитки?
Рекомендую прочитать это: https://macwright.org/2016/09/26/the-180th-meridian.html
Цитата из рекомендованного решения GeoJSON:
In representing Features that cross the antimeridian, interoperability is improved by modifying their geometry. Any geometry that crosses the antimeridian SHOULD be represented by cutting it in two such that neither part’s representation crosses the antimeridian. - GeoJSON Spec, 3.1.9