2017-11-14 7 views
0

私はD3.jsによって作成された地図上で作業しています。 Mike Bostock's tutorialに従って、地図をズームインしてラベルを追加する方法を考えました。しかし、地図を拡大した後、ラベルの座標を再計算する方法がわかりません。ズーム可能なマップ上のラベルの移動方法は?

projection(data.geometry.coordinates)の仕組みがわかりません。 projection()は、現在のsvgに基づいて新しい座標のペアを再作成し、何らかの形で自動的にラベルを配置するようです。したがって、clicked()関数でprojection()を再度実行しようとしましたが、機能しません。ここで

は、あなたが(代わりに svg選択の) g選択にあなたの町を追加した場合は、その後、3

答えて

2

するのではなく、私が働いている、と私はD3のバージョン4を使用していることcodeですズームがその選択に適用されるので、正常に動作するはずです。これは `投影()でズームインした後`自動的にこの場合 `G`には、現在の要素の規模に基づいてラベルを配置しますを意味していhttp://plnkr.co/edit/xJvh6LVweZqQUs7GFFH7?p=preview

+0

var selection = g .selectAll("g.classTown") .data(towns); 

更新されたコード? – SSD

+0

いいえ、projection()はSVG空間内の[x、y]座標を返します。ズームはそのスペースを変換し、そのスペースに含まれるすべてのビューを調整します。 –

関連する問題