如何在Google地图中使用WKT渲染带孔的多边形?

时间:2018-01-23 04:44:37

标签: svg google-maps-api-3 geojson wkt

我正在研究的项目包括解析SVG,提取路径坐标,将它们转换为知名文本,然后转换为GeoJSON以添加到Google Maps API数据层。

这一切都正常,直到路径中有一个或多个洞。在这种情况下,我正在处理一条描述多条相互连接道路的复合路径。我正在使用SVG-to-WKT生成WKT,其路径函数表明如果路径中有孔,则返回的基元将转换为减法多边形语法,坐标数组后面的孔的坐标数组为大纲。此多边形似乎正确转换为GeoJSON(使用Terraformer),从而生成一组坐标数组。然后,将此转换产生的像素坐标转换为地图坐标。

然而,当GeoJSON被添加到数据层时,孔的坐标变得扭曲并出现在其预期位置的左上角,一些多边形在两点之间伸展。

这只是结果的一小部分(不显示拉伸):http://bl.ocks.org/d/4ace4c9c25e02ad658be21c92187b336

如果你缩小,你会注意到应该在道路底部切出一个洞的小矩形。

下面是SVG中道路组如何存在的屏幕截图,其中选择了单个复合路径:

enter image description here

这就是整个道路路径的呈现方式:

enter image description here

我真的不确定还有什么可以尝试的。我想也许是因为这些孔的坐标不是顺时针方向,所以我添加了一个函数来检查和反转数组,如果有必要,它没有改变任何东西。我最初通过SVGOMG运行SVG,但主要是将原语转换回路径。

1 个答案:

答案 0 :(得分:0)

问题证明是非常微不足道的,但需要一段时间才能意识到。我将SVG缩小到一条路径,并密切研究坐标数据。我注意到这些洞被添加为相对路径而不是绝对路径。这对于SVG来说是正常的,但WKT转换器将假设每条路径都是绝对路径。

我只是添加了Snap库并通过toAbsolute()函数传递了每个路径。