D3如何找到合并ploygons的Centroid

时间:2017-01-05 06:25:31

标签: javascript d3.js svg polygon centroid

我有使用D3的情节状态图,我可以使用path.Centroid()函数绘制每个状态的Centroid但是一旦我合并了状态(多边形)以使其成为大区域path.Centroid()不起作用。

如何找到合并Ploygons的Centroid?

参考:here is the link to merged states example

注意:我有所有状态质心的纬度/经度列表。

1 个答案:

答案 0 :(得分:1)

要在“合并状态”示例中找到质心:

 var mergeTopo = topojson.merge(us, us.objects.states.geometries.filter(function(d) { return selected.has(d.id); }));
 var mergeCentroid = [path.centroid(mergeTopo)];

 svg.selectAll(".mergedcentroid").data(mergeCentroid)
      .enter().append("circle") 
      .attr("class", "mergedcentroid")
      .attr("fill", "black")
      .attr("stroke", "purple")
      .attr("stroke-width", 5)
      .attr("r", 15)
      .attr("cx", function (d){ return d[0]; })
      .attr("cy", function (d){ return d[1]; });

在创建圆之前包裹数组中的质心坐标。