Javascript 将d3 v3转换为v4(投影)

Javascript 将d3 v3转换为v4(投影),javascript,d3.js,Javascript,D3.js,如何将此代码从v3传输到v4。此代码的主要目标是在google地图上添加一层路径,并将两个投影组合在一起。 我以前在v3中有过代码,它运行良好。现在我需要将其升级到V4 d3.json("Export_Output_6_modified.json", function(error, jordanLevel2) { if (error) throw error //console.log(data[0].comuni[0].geometry.coordinates);

如何将此代码从v3传输到v4。此代码的主要目标是在google地图上添加一层路径,并将两个投影组合在一起。 我以前在v3中有过代码,它运行良好。现在我需要将其升级到V4

d3.json("Export_Output_6_modified.json", function(error, jordanLevel2) {
      if (error) throw error

      //console.log(data[0].comuni[0].geometry.coordinates);
      var overlay = new google.maps.OverlayView();

      overlay.onAdd = function() {

        var layer = d3.select(this.getPanes().overlayLayer).append("div");//.attr("height",1000)

        overlay.draw = function() {

          layer.select('svg').remove();

          var w = 900;
          var h = 900;

          var color = ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'];
          var heat_color = d3.scaleLinear().domain([0, 1]).range(['#b2df8a', '#ff7f00']).interpolate(d3.interpolateHcl);

          var overlayProjection = this.getProjection();
          console.log(overlayProjection);


         // Turn the overlay projection into a d3 projection
           var googleMapProjection = d3.geoProjection(function(coordinates) {
            var googleCoordinates = new google.maps.LatLng(coordinates[1], coordinates[0]);console.log(googleCoordinates);
            var pixelCoordinates = overlayProjection.fromLatLngToDivPixel(googleCoordinates);console.log(pixelCoordinates );
            return [pixelCoordinates.x, pixelCoordinates.y];
          });

        var path = d3.geoPath(googleMapProjection);


          var svg = layer.append("svg")
            .attr('width', w)
            .attr('height', h)

          var g = svg.append('g')
            .attr("id", "mapGroup");


          g.selectAll("path")
            .data(jordanLevel2.features)
            .enter()
            .append("path")
            .attr("d", googleMapProjection)
            .attr('class', 'state selected')
            .style("fill", function(d, i) {
              return color[i % color.length];
            })
            .style('opacity', .7);

        }
      }
      overlay.setMap(map);

    });
我试图将geo.path更改为geoPath,并且我将大部分代码转移到v4,但仍然会出现错误。有什么建议吗?

。你需要使用一个新的工具来建立它

大概

var googleMapProjection = d3.geoProjection(function(radLon, radLat) {
      // Convert radians to degrees first.
      var googleCoordinates = new google.maps.LatLng(radLon * 180/Math.PI, radLat * 180/Math.PI);
      var pixelCoordinates = overlayProjection.fromLatLngToDivPixel(googleCoordinates);
      return [pixelCoordinates.x, pixelCoordinates.y];
});

var path = d3.geoPath(googleMapProjection);

错误是什么?错误:属性d:应该是moveto路径命令('M'或'M'),“NaN,NaN”。我按照您的说明做了,但它给出了相同的错误。有吗idea@DANAA去看看d3.geoProjection是如何工作的,你的更新仍然没有正确执行。问题仍然存在,很遗憾。你有什么提示或想法来解决这个问题吗?