Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svg 如何在Google Maps中使用WKT中的孔渲染多边形?_Svg_Google Maps Api 3_Geojson_Wkt - Fatal编程技术网

Svg 如何在Google Maps中使用WKT中的孔渲染多边形?

Svg 如何在Google Maps中使用WKT中的孔渲染多边形?,svg,google-maps-api-3,geojson,wkt,Svg,Google Maps Api 3,Geojson,Wkt,我正在从事的项目包括解析SVG、提取路径坐标、将它们转换为已知文本,然后转换为GeoJSON以添加到GoogleMapsAPI数据层 在路径上有一个或多个孔之前,所有这些都可以正常工作。在本例中,我处理的是一条复合路径,它描述了大量相互连接的道路。我使用生成WKT,它的路径函数表示,如果路径中有孔,则返回的原语将转换为减法多边形语法,孔的坐标数组跟随轮廓的坐标数组。该多边形似乎正确地(使用)转换为GeoJSON,从而生成一个坐标数组。然后将此转换产生的像素坐标转换为地图坐标 但是,当GeoJSO

我正在从事的项目包括解析SVG、提取路径坐标、将它们转换为已知文本,然后转换为GeoJSON以添加到GoogleMapsAPI数据层

在路径上有一个或多个孔之前,所有这些都可以正常工作。在本例中,我处理的是一条复合路径,它描述了大量相互连接的道路。我使用生成WKT,它的路径函数表示,如果路径中有孔,则返回的原语将转换为减法多边形语法,孔的坐标数组跟随轮廓的坐标数组。该多边形似乎正确地(使用)转换为GeoJSON,从而生成一个坐标数组。然后将此转换产生的像素坐标转换为地图坐标

但是,当GeoJSON添加到数据层时,孔的坐标会发生扭曲,并显示在其预期位置的左上角,一些多边形在两点之间拉伸

这只是结果的一小部分(不显示拉伸):

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

下面是一个屏幕截图,显示了roads组如何存在于SVG中,并选择了单个复合路径:

这就是整组道路路径的渲染方式:


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

这个问题原来很小,但花了一段时间才意识到。我将SVG简化为一条路径,并仔细研究了坐标数据。我注意到这些洞是作为相对路径而不是绝对路径添加的。这对于SVG是正常的,但WKT转换器将假定每条路径都是绝对路径

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

可以提供一个示例来说明这个问题吗?(代码和数据)