2013-05-24 6 views
10

में मुझे टॉपोजसन के साथ बहुत मज़ा आता है, लेकिन ऐसा लगता है कि topojson.object को topojson के V1 में अपरिभाषित किया गया है, जहां इसे V0 में समर्थित किया गया था। क्या कोई बता सकता है कि मैं इस मुद्दे के आसपास कैसे काम कर सकता हूं? मैं प्रत्येक बहुभुज के लिए टॉपोज़न के रूप में स्वरूपित इनपुट फ़ाइल में विशिष्ट पथ तत्वों को आकर्षित करने की कोशिश कर रहा हूं। कोड है:topojson.object 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

देखें http://stackoverflow.com/questions/17404239/ – Hugolpz

उत्तर

15

आप इसके बजाय 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); 
}); 

एक विस्तृत उदाहरण यहां पाया जा सकता: http://bost.ocks.org/mike/map/

3

v1 रिहाई topojson.feature साथ topojson.object प्रतिस्थापित; व्यवहार समान है, लेकिन नई topojson.feature विधि GeoJSON के साथ बेहतर संगतता के लिए एक फ़ीचर या फ़ीचर कोलेक्शन (एक ज्यामिति या ज्यामिति कोलेक्शन के बजाय) देता है।

@ mbostock के शब्दों this thread से शब्द। तो अपने कोड में केवल एक स्ट्रिंग को इस पर बदलें: .data(topojson.feature(ma, ma.objects.ma).features)। और मुझे लगता है कि आपको GeoJSON से v1 के साथ अपनी TopoJSON फ़ाइल को पुन: उत्पन्न करना चाहिए।

संबंधित मुद्दे