如何在Leaflet中将GeoJSON点添加为矢量切片?

时间:2017-06-22 19:30:19

标签: leaflet geojson vector-tiles

我已经阅读了Stack Overflow上的每个问题,我可以找到并在网上找到的每个例子都可以将GeoJSON矢量图块添加到传单地图中。不幸的是,我仍然无法绕过它,更不用说让我的数据工作了。

我有一个GeoJSON(here)有很多分。我可以将它作为Leaflet中的一个层添加得很好,所以我确信它是一个具有真实值的有效文件。

我已尝试geojson-vtleaflet vector grid

geojson-vt不断返回错误:
Uncaught ReferenceError: z is not defined at <anonymous>:1:30
使用此代码:

geoJson = {data}
var tileOptions = {
    maxZoom: 18, 
    tolerance: 5, 
    extent: 4096,
    buffer: 64, 
    debug: 0, 
    indexMaxZoom: 0, 
    indexMaxPoints: 100000, 
};
var tileIndex = geojsonvt(geoJson, tileOptions);
var tile = tileIndex.getTile(z, x, y);

我在诊断时遇到了很多麻烦,因为我发现的所有示例都没有显示他们的数据,但也没有人引用定义z,x和y,这些都不是GeoJSON的必需值宾语。我错过了什么?

another question of mine我了解到Leaflet矢量网格与GeoJSON点有错误。我设法改变了一些源代码来解决初始错误,但现在得到了超过1000个错误,如:
Error: <path> attribute d: Expected number, "MNaN,47.5aundefin…".

代码:
L.vectorGrid.slicer(geoJson).addTo(map)

如何将GeoJSON点作为矢量切片图层添加到传单贴图中?有没有人有任何数据作为参考的简单示例?任何帮助或其他调查方向将不胜感激。

2 个答案:

答案 0 :(得分:1)

我已经看过几分钟了,我得出结论Leaflet.VectorGrid中存在影响切片点的错误。 I've opened a bug report with relevant information

答案 1 :(得分:0)

我能够通过Leaflet.VectorGrid.Slicer解决我遇到的问题。

首先,我下载了Leaflet.VectorGrid.js源代码并更改了显示的行here(请注意,这对应于VectorGrid github site上可用源代码中的第1483行到第1495行)。

然后,在排除故障后,我发现如果在调用radius时添加了L.vectorGrid.slicer选项,则会将GeoJSON点添加到地图中。这是有效的代码:

var layer = L.vectorGrid.slicer(geoJson, { 
    vectorTileLayerStyles: {
        sliced: {
            radius: 1,
        }
    }
}).addTo(map);