Załadowano kod us.json
, ale gdy próbuję dodać nazwę etykiety, nie można jej uruchomić. Nie widzę właściwości nazwy w pliku .json
, więc jak mogę dodać nazwę każdego stanu? Jestem naprawdę nowy w tej strukturze.Jak dodać etykietę do każdego stanu w pliku d3.js (albersUsa)?
Próbuję różnych tutoriali w Google i Stackoverflow, ale żaden z nich nie działa dla mnie. Oto link do paru tutoriala, który wypróbowałem, który uważam za warty.
obawy mam:
- Chyba brakuje właściwości name w pliku us.json. (jeśli to jest problem, czy istnieje inny plik .json zawierający nazwę stanu i jak używać nazwy stanu z tym plikiem?)
- Czy nazwa stanu USA jest zawarta w
http://d3js.org/topojson.v1.min.js
?
.html
plików (ramowa 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
Plik:
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);
});
Dziękuję wszystkim w zaawansowanych. Doceniam również, jeśli powiesz mi, gdzie nauczyłeś się d3.js.
Dziękuję bardzo, Ta praca doskonale i pozwala mi zrozumieć to jasno. Czas na wstawienie Google API, Cheers! – Xrait
Ta odpowiedź działała głównie, ale od września 2017 r. Pole 'id' w TopoJSON jest łańcuchem o długości zerowej 2 (" 01 "," 05 ", ... '21' ...) i" id " 'pole w nazwach TSV jest ciągiem o zmiennej długości, który nie jest wypełniony zerami. To spowodowało problem w kilku stanach. Aby to naprawić, dodaj zero wypełnienia. 'tsv.forEach (funkcja (d, i) {klawisz var = d.id.length> 1? d.id: '0' + d.id; names [key] = d.name; });' '; –