使用 *.toGeoJSON() 时 shapefile 的 GeoJSON 字符串在 Mapbox 中不完整

The GeoJSON string of shapefile while using *.toGeoJSON() is incomplete in Mapbox

我使用带有 Leaflet 的 Mapbox 来绘制、编辑和删除多边形等。我还使用 leaflet.shapefile 上传 shapefile 并将它们添加到地图中。

对于某个应用程序,我需要将图层转换为 GeoJSON 对象,然后使用以下代码将其转换为 JSON 字符串:

var fcgeojson = layer.toGeoJSON();
var fcgeojsonstring = JSON.stringify(fcgeojson);

我在 this jsfiddle. And for most of the shapefiles, it works just fine. However, in some cases, like when I use this shapefile 中有这个的工作版本,其中一个多边形的 JSON 字符串实际上是不完整的。您可以通过单击 jsfiddle 中的 "Test" 按钮来查看这些字符串。

我还没弄明白为什么会这样(我猜可能是 shapefile 的顶点太多了)。

您用来测试 json 字符串的方法就是问题所在。不完整的 json 字符串来自 stringify 或 alert。对于这个问题,问题很可能出在后者。

Javascript 警报在 10 000 个字符处截断消息,巧合的是当我在加载了 shapefile 的 jsfiddle 中进行测试时出现在警报框中的字符数。

当我使用 console.log() 而不是 alert() 时,我可以看到整个 json(将近 14000 个字符长)。但是,console.log 的最大大小因浏览器而异,因此您始终可以设置 div 或其他元素的内容以在屏幕上显示完整内容。