javascript - 如何使这个 d3-map 响应?
问题描述
我试过分配不同的变体,但没有任何效果。我希望地图根据窗口大小进行缩放。对 D3 来说非常新,所以一定要知道如何破解这个坚果。我想我需要重新计算宽度和高度,但是如何以及在哪里?
我已经搜索过,但似乎有很多方法,但没有人为我解决问题。非常感谢这里的任何输入。
var width = Math.max(
document.documentElement.clientWidth,
window.innerWidth || 0
),
height = Math.max(
document.documentElement.clientHeight,
window.innerHeight || 0
);
const svg = d3
.select("body")
.append("svg")
.attr("height", height)
.attr("width", width);
const projection = d3
.geoAlbers()
.center([4, 64.9])
.rotate([-10.4, 0])
.parallels([50, 60])
.scale(4000)
.translate([width / 2, height / 2]);
const path = d3.geoPath(projection);
var data = {
46: {
navn: "Vestland",
kvinner: 2000,
menn: 4000,
}
function fylkeInfoBlob(fylke) {
var kvinner = data[fylke.fylkesnummer].kvinner;
var menn = data[fylke.fylkesnummer].menn;
var navn = data[fylke.fylkesnummer].navn;
var prosent = (100 / (kvinner + menn)) * kvinner;
console.log(prosent);
return `
<div class="tooltip">
<h2>${navn}</h2>
<p>Kvinner: ${kvinner}</p>
<p>Menn: ${menn}</p>
<p>
</div>
`;
}
function mouseOver(d) {
const fylke = d.path[0].__data__.properties;
d3.select(this)
.transition()
.duration("50")
.attr("opacity", ".5")
.attr("class", "hoverfylker");
d3.select(".content").html(fylkeInfoBlob(fylke));
}
function mouseOut() {
d3.select(".content").text("");
d3.select(this)
.transition()
.duration("50")
.attr("opacity", "1")
.attr("class", "fylke");
}
const visKart = async () => {
const kart = await d3.json("data/map.topojson");
const andel = await d3.json("data/andel.json");
var fylker = topojson.feature(kart, kart.objects.collection);
console.log(fylker)
const g = svg.append("g");
g.selectAll("path")
.data(fylker.features)
.enter()
.append("path")
.attr("class", "fylke")
.attr("d", path)
.on("mouseover", mouseOver)
.on("mouseout", mouseOut);
};
visKart();
解决方案
推荐阅读
- java - 为什么这个三元表达式不起作用?
- c++ - 如何返回在 std::variant 的所有替代项中定义的成员,即使成员是不同的类型?
- node.js - 如何在nestjs中添加passport-saml?
- python - Pydantic 允许在具有嵌套模型的字段上使用奇怪的类型
- search - ripgrep 查找包含多个单词的文件,可能在不同的行?
- java - 如何将 FireBase 云消息传递令牌存储在 Android 的 firebase 数据库中?
- django - 成功提交表单后重定向后的Django Form为空
- python - 通过 NetworkX 中的属性检索节点时遇到问题
- mongodb - 如何将 mongodb 文档转换为 JSON 字符串?
- python - 将莱特币区块链分叉并修改为不可开采和 POS?