2

D3 できれいな米国の州の地理マップを表示する際に問題が発生します。

  1. http://examples.oreilly.com/0636920026938/chapter_12/04_fill.htmlから正確なコードをコピーしましたhttp://examples.oreilly.com/0636920026938/chapter_12/us-states.json から us-states.json もダウンロードしました

  2. CentOS の firefox で、個々の状態ではなく、svg 要素全体を覆う大きな鋼の青いボックスを見ました。

  3. 最終的に、d3.v3.js ではプエルトリコがサポートされていないことが判明したため、プエルトリコの説明を含む us-states.josn ファイルの最後の行を削除しました。

  4. それでも大きなスチールボックスを入手してください。HTML をたどると、Virginia に対応するパス要素も、SVG 要素全体にわたって大きな正方形の鋼の青いボックスを示していることがわかりました。

  5. style("opacity",function(d) { if (d.properties.name=="Virginia") return 0.0; else return "1.0"; }) を追加しました

  6. これで、空白を示すバージニアとデータ ファイルから手動で削除したプエルトリコを除いたすべての州がマップに表示されます。

  7. html 要素と json ファイルでバージニア州のジオメトリを調べたところ、バージニア州とあまり変わらない、またはユニークなものは見られません。バージニア州は 3 つの部分で描かれていますが、ワシントンなどの他の州は 4 つに分けられています。

  8. バージニア州が正しく表示されない理由についての提案。バージニアの HTML タグの検査も問題ないようで、データが反映されているようです。次の詳細レベルで、D3 内部または外部ブラウザーがバージニアを描画するのに苦労し、デフォルトで svg 領域全体に大きな鋼の青いボックスを描画するのに苦労している理由を理解するために、デバッグ コードを追加するにはどうすればよいでしょうか?

コードは書籍の例とまったく同じように開始されました。唯一の変更点は、d3.v3.js が d3 org サイトの zip ファイルから新たにダウンロードされたことです。もちろん、Virginia の不透明度はプログラムによってゼロに削減されました。

ありがとう..私はブラウザの問題、次にデータの問題、最後にd3ライブラリのバージョンの問題を抱えていたと思っていましたが、すべてを排除し、次に何を見るべきかを決めるのに助けが必要です..

4

3 に答える 3

1

バージョン 2 とバージョン 3 の間で D3 のジオ関数にいくつかの変更がありました。これはリリース ノートで確認できますが、これが問題の原因であると思われます。3.1.8のリリース ノートを参照してください。プエルトリコが削除され、クリッピングが適用されていることが記載されています。これらは、マップに何が起こったのかを説明すると思います。FWIW d3.v2 でそのコードをテストしたところ、すべてが期待どおりにレンダリングされました。マップでは、塗りつぶしをなしに設定し、ストークを何かに設定することで、これに関連する問題を部分的に解決できます。これを d3 Google グループに投稿することをお勧めします。なぜなら、Scott Murray がそこに頻繁に投稿しているからです。彼はすでに答えを持っているはずです。

于 2013-10-29T07:09:57.300 に答える
1

w.Scott Murray を確認したところ、バージニア州の座標が実際に機能していたことを確認しましたが、D3 はバージョン 3.1.8 で地理データの処理方法を変更しました。本日現在、新しいバージョンの us-states.json が http://examples.oreilly.com/0636920026938/chapter_12/us-states.jsonで利用できるよう になり、最新の D3 3.4.6 バージョンで適切に動作します。

于 2014-05-07T02:42:48.447 に答える
0

バージニアの JSON コードでは、ボックスのアウトラインがコードに挿入されているように見えます。これは、バージニアのマルチポリゴンの 3 つの部分の 1 つです。このボックスを削除すると (座標は 4 つしかありません)、JSON が機能するはずです。米国全体の地図では、アラスカ/ハワイ周辺の輪郭が失われます。

于 2014-03-16T22:36:55.857 に答える