2013-05-24 8 views
10

Mam dużo zabawy grając z topojson, ale wygląda na to, że topojson.object jest niezdefiniowany w V1 topojson, gdzie był obsługiwany w V0. Czy ktoś może wyjaśnić, jak mogę obejść ten problem? Próbuję narysować odrębne elementy ścieżki dla każdego wielokąta w pliku wejściowym sformatowanym jako topojson. kod to:topojson.object w topojson V1

d3.json("maTopo.json", function(error, ma) { 
    svg.selectAll(".subunit") 
     .data(topojson.object(ma, ma.objects.ma).geometries) 
    .enter().append("path") 
     .attr("class", function(d) { return "subunit " + d.id; }) 
     .attr("d", path); 
}); 
+0

Zobacz http://stackoverflow.com/questions/17404239/ – Hugolpz

Odpowiedz

15

Zamiast tego można użyć topojson.feature.

d3.json("maTopo.json", function(error, ma) { 
    svg.selectAll(".subunit") 
     .data(topojson.feature(ma, ma.objects.ma).features) 
    .enter().append("path") 
     .attr("class", function(d) { return "subunit " + d.id; }) 
     .attr("d", path); 
}); 

Szczegółowy przykład można znaleźć tutaj: http://bost.ocks.org/mike/map/ uwolnienie

3

V1 zastąpiony topojson.object z topojson.feature; zachowanie jest podobne, ale nowa metoda topojson.feature zwraca Feature lub FeatureCollection (a nie Geometry lub GeometryCollection) dla lepszej kompatybilności z GeoJSON.

@ Słowa mbostocka z this thread. Zmień tylko jeden ciąg w kodzie na: .data(topojson.feature(ma, ma.objects.ma).features). I przypuszczam, że powinieneś również zregenerować swój plik TopoJSON za pomocą v1 z GeoJSON.

Powiązane problemy