【问题标题】:How to get the pixel coordinates from a SVG path String如何从 SVG 路径字符串中获取像素坐标
【发布时间】:2017-07-07 12:41:59
【问题描述】:

我想结合使用 go.js 和 leaflet.js 在地图上显示几何对象 对我来说重要的是几何对象坚持他们的地理位置。我只是将像素坐标转换为 lat/lng 地理坐标。

但是,对于某些几何对象来说,获得所有必要的地理坐标并不是那么容易。 对于多边形,我得到一个 SVG-Path 字符串,例如:

"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"

以及中间Point的像素坐标。

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

希望你们能帮助我。

最好的问候!

enter image description here

【问题讨论】:

  • 你检查this链接了吗?也许这可以帮助您找到 SVG 坐标点和像素之间的相关性
  • 您提供的路径无效

标签: javascript svg gojs


【解决方案1】:

您是否有一个 GoJS Part(或 Node),其中包含一个 Shape,其 Shape.geometryString 是您发布的内容?

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

【讨论】:

  • 您的建议听起来不错,但我不确定如何获取形状对象及其几何形状。 diagram.findNodeForData(e).geometry 未定义。如何获得 Shape.geometry?
  • diagram.findNodeForData 是否返回了 Node 而不是 null?如果是这样,那么您需要找到保存您感兴趣的几何图形的节点内的形状。这取决于模板的定义方式。它可能是 Node 中唯一的对象,在这种情况下它只是 node.elt(0)。
猜你喜欢
  • 2020-04-22
  • 2012-04-25
  • 2022-01-13
  • 2011-09-25
  • 2017-11-26
  • 2022-07-24
  • 2012-08-20
  • 2013-07-07
  • 2014-05-03
相关资源
最近更新 更多