2013-05-24 15 views
10

Mi sto divertendo molto a giocare con topojson, ma sembra che topojson.object non sia definito nella V1 di topojson, dove è stato supportato in V0. Qualcuno può spiegare come posso risolvere questo problema? Sto cercando di disegnare elementi di percorso distinti per ogni poligono in un file di input formattato come topojson. il codice è:topojson.object in 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

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

risposta

15

È possibile utilizzare topojson.feature invece.

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); 
}); 

Un esempio dettagliato può essere trovato qui: http://bost.ocks.org/mike/map/ rilascio

3

V1 sostituito topojson.object con topojson.feature; il comportamento è simile, ma il nuovo metodo topojson.feature restituisce una feature o feature collection (anziché una geometria o geometry collection) per una migliore compatibilità con GeoJSON.

@ parole di mbostock da this thread. Quindi modifica solo una stringa nel tuo codice: .data(topojson.feature(ma, ma.objects.ma).features). E immagino che dovresti rigenerare anche il tuo file TopoJSON con v1 da GeoJSON.

Problemi correlati