gpt4 book ai didi

javascript - 如何选择具有特定 ID 的 d3 svg 路径

转载 作者:行者123 更新时间:2023-12-02 23:09:38 29 4
gpt4 key购买 nike

我正在与 d3 合作。我从 json 文件创建了一个由国家/地区组成的地球仪。地球仪有 svg 路径,每条路径都有一个 id。我想选择具有特定 ID 的路径。请问我该怎么做?

handleGlobe();

$('#panel div').click(function(){

if (this.className == 'represented') {
thisID = $(this).attr('id');
focusedCountry = d3.select('path') //??? not sure how to say this
p = d3.geo.centroid(focusedCountry);
}

...

handleGlobe() {
var feature;

var projection = d3.geo.azimuthal()
.scale(380)
.origin([-71.03,42.37])
.mode("orthographic")
.translate([380, 400]);

var circle = d3.geo.greatCircle()
.origin(projection.origin());

// TODO fix d3.geo.azimuthal to be consistent with scale
var scale = {
orthographic: 380,
stereographic: 380,
gnomonic: 380,
equidistant: 380 / Math.PI * 2,
equalarea: 380 / Math.SQRT2
};

var path = d3.geo.path()
.projection(projection);

var svg = d3.select("#globe").append("svg:svg")
.attr("width", 800)
.attr("height", 800)
.on("mousedown", mousedown);



d3.json("world-countries.json", function(collection) {

feature = svg.selectAll("path")
.data(collection.features)
.enter().append("svg:path")
.attr("d", clip)
.attr("id", function(d) { return d.id; })
.on("mouseover", pathOver)
.on("mouseout", pathOut)
.on("click", click);

feature.append("svg:title")
.text(function(d) { return d.properties.name; });

feature.each(function(){

for (var i=0; i<unrepresented.length; i++){
if ($(this).attr('id') == unrepresented[i]) {
d3.select(this).style("fill", "#ededed");
}

}
if (($(this).attr('id') == 'GRL') || ($(this).attr('id') == 'ATA')) { //Greenland and Antarctica are shapes, but not countries
d3.select(this).style("fill", "#ededed");
}
});


});

d3.select(window)
.on("mousemove", mousemove)
.on("mouseup", mouseup)
;

d3.select("select").on("change", function() {
projection.mode(this.value).scale(scale[this.value]);
refresh(750);
});

var m0,
o0;

function mousedown() {
m0 = [d3.event.pageX, d3.event.pageY];
o0 = projection.origin();
d3.event.preventDefault();
}

function mousemove() {
if (m0) {
var m1 = [d3.event.pageX, d3.event.pageY],
o1 = [o0[0] + (m0[0] - m1[0]) / 8, o0[1] + (m1[1] - m0[1]) / 8];
projection.origin(o1);
circle.origin(o1)
refresh();
}
}

function mouseup() {
if (m0) {
mousemove();
m0 = null;
}
}

function refresh(duration) {
(duration ? feature.transition().duration(duration) : feature).attr("d", clip);
}

function clip(d) {
return path(circle.clip(d));
}

function click() {

}

function pathOver() {

}

function pathOut() {

}
//end globe

}

最佳答案

您可以通过在 ID 前添加“#”前缀并将其用作选择器来按 ID 选择元素:

d3.select("#ID");

或选择具有该 ID 的路径

d3.select("path#ID");

关于javascript - 如何选择具有特定 ID 的 d3 svg 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22360355/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com