d3.js - 在可缩放的可点击地图上绘制点

时间:2013-04-02 16:58:40

标签: csv plot maps d3.js

我正在尝试调整http://bl.ocks.org/mbostock/2206340处找到的地图并在其上绘制一些点。我在一个名为data.csv的csv文件中有我想要使用的数据(纬度和经度),其格式如下:

lon_0,lat_0,lon_1,lat_1
-122.1430195,37.4418834,-122.415278,37.778643
-122.1430195,37.4418834,-122.40815,37.785034
-122.4194155,37.7749295,-122.4330827,37.7851673
-122.4194155,37.7749295,-122.4330827,37.7851673
-118.4911912,34.0194543,-118.3672828,33.9164666
-121.8374777,39.7284944,-121.8498415,39.7241178
-115.172816,36.114646,-115.078011,36.1586877

我对代码的修改包含在以下代码段

d3.json("us-states.json", function(json) {
  d3.csv("data.csv", function(data) {
   dataset = data.map(function(d) { return [ +d["lat_0"], +d["lon_0"] ]; });
   console.log(data)
   states.selectAll("circle")
     .data(data)
     .enter()
     .append("circle")
     .attr("cx", function(d) {
               return projection([d["lon_0"], d["lat_0"] ])[0];
               })
     .attr("cy", function(d) {
               return projection([d["lon_0"],d["lat_0"] ])[1];
               })
     .attr("r", 5)
     .style("fill", "red");

});

  states.selectAll("path")
      .data(json.features)
    .enter().append("path")
      .attr("d", path)
      .on("click", click);


});

地图呈现正常,但未显示地块。知道这里有什么不对吗?我已经尝试了很多不同的东西,我不确定这是关于点数的状态图的问题,还是投影的某些问题......

1 个答案:

答案 0 :(得分:4)

示例中绘制的路径被填充,即它们后面的任何内容都会被遮挡。 SVG元素按照指定的顺序绘制。在您的情况下,首先绘制圆圈,然后绘制状态的路径,从而遮挡圆圈。

在绘制圆圈之前绘制状态路径时,它会起作用。