Đã tải us.json
, nhưng khi tôi cố gắng thêm tên nhãn tôi không thể làm cho nó hoạt động. Tôi không thấy thuộc tính tên trong tệp .json
để tôi có thể thêm mỗi tên tiểu bang bằng cách nào? Tôi thực sự mới trong khuôn khổ này.Cách thêm Nhãn cho mỗi trạng thái trong d3.js (albersUsa)?
Tôi thử Hướng dẫn khác nhau trên Google và Stackoverflow, nhưng không có hướng dẫn nào phù hợp với tôi. Đây là liên kết để hướng dẫn vài tôi đã cố gắng, mà tôi nghĩ là xứng đáng.
Các mối quan tâm tôi có:
- Tôi nghĩ rằng tôi là thiếu tài sản tên trong tập tin us.json. (nếu đó là vấn đề, có bất kỳ tệp .json nào khác bao gồm tên tiểu bang không? Và cách sử dụng tên tiểu bang với tệp đó?)
- Tên tiểu bang Hoa Kỳ có bao gồm trong
http://d3js.org/topojson.v1.min.js
không?
.html
Tệp (Khung Loaded)
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
.js
File:
var width = 1500,
height = 1100,
centered;
var usData = ["json/us.json"];
var usDataText = ["json/us-states.json"];
var projection = d3.geo.albersUsa()
.scale(2000)
.translate([760, height/2]);
var path = d3.geo.path()
.projection(projection);
var svg = d3.select("body").append("svg")
.style("width", "100%")
.style("height", "100%");
svg.append("rect")
.attr("class", "background")
.attr("width", width)
.attr("height", height)
.on("click", clicked);
var g = svg.append("g");
d3.json(usData, function(unitedState) {
g.append("g")
.attr("class", "states-bundle")
.selectAll("path")
.data(topojson.feature(unitedState, unitedState.objects.states).features)
.enter()
.append("path")
.attr("d", path)
.attr("class", "states")
.on("click", clicked);
});
Cảm ơn bạn tất cả mọi người ở cao cấp. Tôi cũng đánh giá cao nếu bạn cho tôi biết nơi bạn đã học d3.js.
Cảm ơn bạn rất nhiều, Công việc này hoàn hảo và cho phép tôi hiểu rõ ràng. Bây giờ là lúc để chèn Google API, Chúc mừng! – Xrait
Câu trả lời này hoạt động chủ yếu, nhưng tính đến tháng 9 năm 2017, trường 'id' trong TopoJSON là một chuỗi có độ dài bằng không 2 chuỗi ('01', '05', ... '21' ...) và' id 'trường trong tên TSV là một chuỗi có độ dài thay đổi mà không phải là không đệm. Điều này gây ra một vấn đề cho một vài tiểu bang. Để khắc phục nó, hãy thêm không đệm. 'tsv.forEach (hàm (d, i) {var key = d.id.length> 1? d.id: '0' + d.id; tên [khóa] = d.name; });' –