【发布时间】:2017-11-26 18:29:15
【问题描述】:
在这个问题上花了很长时间没有成功后,我决定在这里发布我的(第一个!)问题。
对于一个项目,我使用 topojson 来绘制地图的一部分。在我的 SVG 中,我有一些包含一些点的组(我使用 geojson.io 工具放置了这些点)。
地图如下所示:plotted map
代码结构如下:
<svg width='1300' height='900'>
<g class="gate" id="D5">
<path d="M645.3426080089994,434.9821086442098m0,4.5a4.5,4.5 0 1,1 0,-9a4.5,4.5 0 1,1 0,9z"></path>
</g>
<g class='gate' id='d4'>
<path d="M605.3552137160441,383.2755208062008m0,4.5a4.5,4.5 0 1,1 0,-9a4.5,4.5 0 1,1 0,9z"></path>
</g>
</svg>
我想做的是根据这些点的确切位置的某些条件附加一些 SVG。现在,虽然我知道如何附加 SVG,但在提取地图上点的坐标时遇到了麻烦。我想附加的 SVG 必须放在地图中的点上。但是,例如,当我将一个圆附加到组时,我输入的坐标不被认为是相对于该点的,而是相对于整个 SVG 区域的绝对坐标。圆圈在左上角结束,而不是在实际点上。
我试图提取每个点的坐标以便使用这些数据进行绘图,但我还没有成功。我设法通过以下方式获取节点:
d3.selectAll('#D5').select('path').node()
返回:
<path d="M605.3552137160441,383.2755208062008m0,4.5a4.5,4.5 0 1,1 0,-9a4.5,4.5 0 1,1 0,9z"></path>
当我查看路径对象内部时,我看到 __data__ 元素的深处有一些坐标,但我无法提取这些坐标。
如果我在开始时定义了点的坐标,这个问题就不会成为问题。但是由于这是topojson,所以整张图只是路径元素的组合。
如何在不事先明确定义坐标的情况下在点上绘制 SVG?如果需要更多信息,请告诉我。
谢谢!
【问题讨论】:
标签: javascript d3.js svg topojson