我有一个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]上):
有什么建议吗?为什么我在这里丢瓷砖?
答案 0 :(得分:0)
我建议您阅读以下内容:https://macwright.org/2016/09/26/the-180th-meridian.html
引用GeoJSON规范推荐的解决方案:
在表示跨越时空的要素时,通过修改其几何形状可提高互操作性。横越等轴线的任何几何图形都应通过将其切成两部分来表示,以使零件的表示都不会越过等轴线。 -GeoJSON Spec, 3.1.9