2017-07-07 182 views
1

我想在地图上使用go.js和leaflet.js结合显示几何对象 几何对象坚持自己的地理位置对我来说很重要。我只是将像素坐标转换为纬度/经度坐标。如何从SVG路径获取像素坐标字符串

但是,对于某些几何对象,获取所有必需的地理坐标并不容易。 对于多边形我得到一个SVG路径字符串,如:

"F M54 77 L39 128 L0 146 L18 178 L45 215 L87 220 L79 321 L79 400 L153 371 L246 340 L296 325 L332 255 L324 207 L355 164 L338 138 L368 105 L380 23 L336 0 L282 35 L222 10 L147 10 L95 38 L60 44z" 

以及中间点的像素坐标。 This is the polygon using the SVG-Path from above

所以我需要每个角点的像素坐标。 你有什么想法或建议如何将SVG路径转换为其像素坐标?

希望你们能帮助我。

此致敬礼!

enter image description here

+0

你检查了[this](https://stackoverflow.com/questions/12788422/svg-coordinate-system-points-vs-pixels)吗?也许这可以帮助您找到SVG坐标点和像素之间的相关性 –

+0

您提供的路径无效 –

回答

1

你有一个GoJS Part(或Node),其持有ShapeShape.geometryString是你贴什么?

如果是这样,我建议你看看Shape.geometry并看看它的Geometry.figures'PathFigure s和它们的PathSegment s。对于每个点,您可以通过添加Part.position加上Shape.strokeWidth的一半来将其转换为GoJS文档坐标。然后,您可以通过调用Leaflet地图的containerPointToLatLng方法将文档坐标转换为LatLng。

+0

您的建议听起来不错,但我不确定如何获取形状对象及其几何图形。 diagram.findNodeForData(e).geometry未定义。 如何获得Shape.geometry? –

+0

'diagram.findNodeForData'是否返回一个Node而不是null?如果是这样,那么你需要找到Node中的Shape,它包含着你感兴趣的Geometry,这取决于模板是如何定义的。它可能是节点中的唯一对象,在这种情况下,它只是'node.elt(0)'。 –