Rob*_*Rob 10 map geojson leaflet topojson
我正在尝试显示横跨第180个子午线的geoJSON对象(在本例中为俄罗斯的轮廓).目前,这部分国家/地区位于地图左侧,部分位于右侧:
看看传单,似乎有一个修复,但似乎不起作用:https://github.com/Leaflet/Leaflet/issues/82.我也试过添加一个coordsToLatLng函数,但似乎无法让它工作.平铺图层有一个continuousWorld
我认为不适用于geoJSON对象的选项.
此数据位于:https://dl.dropboxusercontent.com/u/12085570/RUS.json.数据从shapefile生成到geojson,最后生成到topojson.转换topojson我使用的--no-stitch-poles
选项让它在地图上显示"很好",这意味着它不会将右边的点连接到地图的左侧.
有没有办法让它显示为一个连续的对象而不会在子午线周围分裂?
我遇到了同样的问题,我的解决方案涉及利用以下几件事:1) Leaflet 允许您将元素放置在 180/-180 经度之外。2) 穿过反子午线的地理实体几乎全部包含负经度坐标或正经度坐标。
我的解决方案是使用递归函数遍历 geoJSON 对象内的坐标数组,并且对于俄罗斯,将负坐标值转换为等效的正值。例如,值 -175 将转换为 185。
下面是我用来处理坐标数组的函数。我将其用于东半球的位置 - 您必须修改转换才能使用西半球的位置。
antimeridian(elem: any) {
if (Array.isArray(elem)) {
for (var i = 0; i < elem.length; i++) {
if (Array.isArray(elem[i][0])) {
this.antimeridian(elem[i]);
} else {
if (elem[i][0] < 0) {
elem[i][0] = 180 + (180 + elem[i][0]);
}
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
948 次 |
最近记录: |