Рисование дуг между связующими точками на карте d3.js - PullRequest
0 голосов
/ 27 января 2019

Я совершенно новичок в d3.js и хотел бы поучиться.Я пытаюсь нарисовать дуги между точками соединения на карте.

Я использую этот замечательный пример из ссылки . Это код, который я пытаюсь внести, идобавить дуги для plnkr для соединения точек.

Я видел комментарии к stackoverflow, я действительно знал, как применять методы:

Рисование соединительных линий («Великие дуги») на карте символов D3

Если я воспользуюсь приведенным ниже кодом, результатом будут все соединительные линии:

                var pathLine = d3.line()
            //      .curve(d3.curveCatmullRom.alpha(0))
            //      .curve(d3.curveCardinal.tension(0))
                    .curve(d3.curveLinear)
                    .x(function(d) { return projection([d["longitude"],d["latitude"]])[0];})
                    .y(function(d) { return projection([d["longitude"],d["latitude"]])[1];})           

                var Pathnew = d3.select('#map').append("path")
                .attr("d",pathLine(data[4]))
                .attr("class","bubble")
                .on("mouseover", function(d,i) { d3.select(this).transition().duration(1500).style("stroke-width", 2).style("stroke-opacity", .4).style('stroke', 'green'); })
                .on("mouseout", function(d,i) { d3.select(this).transition().duration(1500).style("stroke-width", 2).style("stroke-opacity", .4).style('stroke', 'red');    })  
                ;              

Я пытаюсь использоватьаналогичный код:

                    d3.csv("flights.csv", function(flights) {
                  var linksByOrigin = {},
                      countByAirport = {},
                      locationByAirport = {},
                      positions = [];

                  var arc = d3.geo.greatArc()
                      .source(function(d) { return locationByAirport[d.source]; })
                      .target(function(d) { return locationByAirport[d.target]; });

                  flights.forEach(function(flight) {
                    var origin = flight.origin, 
                        destination = flight.destination,
                        links = linksByOrigin[origin] || (linksByOrigin[origin] = []);
                        links.push({source: origin, target: destination});
                        countByAirport[origin] = (countByAirport[origin] || 0) + 1;
                        countByAirport[destination] = (countByAirport[destination] || 0) + 1;
                  });

, а также этот:

var arc = d3.geo.greatArc();

                    d3.csv("searches.csv", function(error, csv) {
                  csv.forEach(function(d, i) {
                    var orgGeo = airportMap[d.origin];
                    var dstGeo = airportMap[d.destination];

                    if (orgGeo && dstGeo) {
                      var data = {source: orgGeo, target: dstGeo};
                      var trans = svg.append("path")
                                     .attr("d", function(d) { return path(arc(data)); })
                                     .attr("fill", "none")
                                     .attr("stroke", d3.rgb(255, 255, 255))
                                     .attr("stroke-width", 0.4)
                                     .attr("stroke-opacity", 1e-6)
                                     .transition()
                                     .delay(i * 5)
                                     .duration(300)
                                     .ease(Math.sqrt)
                                     .attr("stroke-opacity", 0.7)
                                     .transition()
                                     .duration(Math.min(+d.search_count * 1000, 5000))
                                     .ease(Math.sqrt)
                                     .attr("stroke-opacity", 1e-6)
                                     .remove();
                    }
                  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...