2016-07-20 12 views
-1

私はd3.jsマップを作成しています。私はいくつかの国の点をプロットし、それらの点を円弧で結んだ。問題は、いくつかのアークが中断されていることです。d3.jsマップ行が中断されました

Interrupted arcs on map

gArcs.append("path") 
 
    .datum({ 
 
    type: "LineString", 
 
    coordinates:[ 
 
     [data.dataArray[i].long_from, data.dataArray[i].lat_from], 
 
     [data.dataArray[i].long_to, data.dataArray[i].lat_to] 
 
    ] 
 
    }) 
 
    .attr("class", "arc") 
 
    .attr("d", path) 
 
    .style({ 
 
    'stroke': lineColor, 
 
    'stroke-width':lineWidth, 
 
    })

中断されることなく円弧を描画する方法上の任意のアイデア?

+0

中断されたアークはありません。描かれている1つの円は、カンザスシティとアリススプリングスを地図に投影した[大円](https://en.wikipedia.org/wiki/Great_circle)です。あなたの選択の緯度でちょうどクリップされます。だから、あなたの質問は何ですか? – altocumulus

+0

こんにちはaltocumulus、私はちょうど最短の道を使用し、私の例では、アフリカの上に、私の地図上に連続弧を持っていないだろう。 thx – JeanMichLCarton

+0

http://grokbase.com/t/gg/d3-js/138wqyv0ac/straight-lines-on-map-in-d3-jsと[* "d3.jsの地図の直線" *](/ q/18493505) – altocumulus

答えて

0

最後に、中断したアークを避けるために、マップ上に投影された点を持つ直線を描くというソリューションを選択しました。

features.selectAll("path") 
    .data(data.dataArray) 
    .enter().append("line") 
    .filter(function(d) { 
    return d.country_name_from == countryNameFrom 
    }) 
    .attr("x1", function (d) { 
    return projection([d.long_from,d.lat_from])[0]; 
    }) 
    .attr("y1", function (d) { 
    return projection([d.long_from,d.lat_from])[1]; 
    }) 
    .attr("x2", function (d) { 
    return projection([d.long_to,d.lat_to])[0]; 
    }) 
    .attr("y2", function (d) { 
    return projection([d.long_to,d.lat_to])[1]; 
    }) 
    .attr("d", path) 
    .style({ 
    'stroke': lineColor, 
    'stroke-width':lineWidth, 
    }) 
関連する問題