2

Leafletをベースレイヤーとして使用し、d3 topojsonファイルを使用してタイムラプス塗りつぶしマップに取り組んでいるため、一部の国で色を付けることができます。http://bost.ocks.org/mike/leaflet/を使用して開始しましたが、ロシア連邦でシェーディングを試みるまで、すべてが順調に進んでいました。そのランドマスは連続していないタイルにまたがっており、塗りつぶしスタイルを #RUS パスに追加しようとすると、異常な動作をします。例はこちら: http://dataviz.du.edu/projects/scratch/study_abroad.html 例は、完全にレンダリングするのに 1.5 秒かかります。3 つの国をシェーディングし、最後にロシア連邦をシェーディングします。

この例では、他の純粋な d3 プロジェクトで使用した topojson ファイルを使用し、これらのコンテキストで #RUS をこの問題なしで埋めました。

誰でも助けることができますか?前もって感謝します。

4

1 に答える 1

1

この例では、他の純粋な d3 プロジェクトで使用した topojson ファイルを使用し、これらのコンテキストで #RUS をこの問題なしで埋めました。

TopoJSON ファイルが実際に破損しているため、間違っているに違いありません。サーバーから直接そのファイルを使用した例をご覧ください: http://plnkr.co/edit/QOTwV3?p=previewプレーンな TopoJSON と Leaflet の GeoJSON レイヤーを使用していますが、まったく同じ結果が得られることに注意してください。

PS。これに D3 を使用している理由はありますか? D3 を使用せずに Leaflet と TopoJSON を使用するだけで、あなたがしていることを確認できます。簡単な例を次に示します。

function delay(features) {
  var geojsonLayer = new L.GeoJSON(null, {
    style: getStyle,
  }).addTo(map);
  var delay = 100;
  features.forEach(function(feature) {
    delay = delay + 100;
    setTimeout(function() {
      geojsonLayer.addData(feature);
    }, delay);
  });
}

var url = 'http://crossorigin.me/http://dataviz.du.edu/projects/scratch/worldnew.json';

$.getJSON(url, function(data) {
  var geojsonData = topojson.feature(data, data.objects.test);
  delay(geojsonData.features);
});
于 2015-09-15T11:38:55.617 に答える