私はD3 Globeの実装を進めています。ユーザーがボタンをクリックしたときに地球にパスを追加しようとしていますが、これは成功しているとは言えません。一度にすべてのパスを追加しても問題はありませんが、トリガーイベント後に追加しようとすると失敗します。私のjsfiddle:http://jsfiddle.net/Guill84/b6xvj76e/1/。私はJSONに問題があるとは思わないが、期待通りにコンソールにポップアップする。D3 Globeへの新しいパスの追加
失敗したスクリプトのビットは、フィドルの一番下に表示されます。私は、参照を容易にするために以下に貼り付け:
$("#clickMe").click(function() {
data = {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {
"name": "path1"
},
"year": "2010",
"geometry": {
"type": "Polygon",
"coordinates": "[[[116.4551,40.2539],[117.5977,44.3408],[116.4551,40.2539]]]"
},
"id": "RML"
},
{
"type": "Feature",
"properties": {
"name": "path2"
},
"year": "2010",
"geometry": {
"type": "Polygon",
"coordinates": "[[[116.4551,40.2539],[122.3438,41.0889],[116.4551,40.2539]]]"
},
"id": "RML"
},
{
"type": "Feature",
"properties": {
"name": "path3"
},
"year": "2010",
"geometry": {
"type": "Polygon",
"coordinates": "[[[116.4551,40.2539],[105.9961,37.3096],[116.4551,40.2539]]]"
},
"id": "RML"
},
{
"type": "Feature",
"properties": {
"name": "path4"
},
"year": "2010",
"geometry": {
"type": "Polygon",
"coordinates": "[[[116.4551,40.2539],[109.5996,35.6396],[116.4551,40.2539]]]"
},
"id": "RML"
}]}
console.log(data);
var svg = d3.select("#body");
flows = svg.selectAll("path")
.data(data)
.enter().append("svg:path")
.attr("d", clip)
.style("stroke", "black")
.attr("id", function(d) {
return d.properties.name.split(' ').join('_')
});
});
オスカーは、あなたの入力のためにあなたを-thank。あなたの答えは90%です。パスは現在画面上に正しく表示されていますが、それらはsvgに正しく追加されていますが、ユーザーが地図を移動したりズームイン/ズームアウトしたりすると更新されません。これはあなたがそれらを参照するために別のクラスを使用したためでしょうか?ちなみに、私は 'フィーチャー'クラスを使っていて、正しく表示しています。彼らはちょうど周りに移動しないでください – Noobster
ちなみに、それはおそらくあなたがそれらを見ていない...あなたが中国上にマウスを移動し、それらを追加すると、彼らは正しくsvgに追加されていることがわかります...彼らはちょうど失敗地球儀が動くように更新するには – Noobster
なぜ私はそれらが更新されないのか知っていると思う:var 'svg'の初期化に従って'#body'要素に追加されます。おそらく 'g'要素を使ってすべての国のパスを追加し、' .flow'をこの要素に追加してください。私がコンピュータにアクセスすると、このメッセージがあまり意味を持たない場合に備えて、私の回答を更新します。 –