gpt4 book ai didi

javascript - 错误 - 放大 D3 map - d3.behavior 未定义

转载 作者:行者123 更新时间:2023-11-29 10:03:47 25 4
gpt4 key购买 nike

我已经开始研究 D3 几天了,我正在尝试为我所做的 map 添加缩放功能。

我正在使用 this example as a basis ,但是当我尝试适应我的 map 时,我收到此错误,并且我的 map 消失了

TypeError: d3.behavior is undefined

这是我的代码:

var projection = d3.geoMercator()
.translate([width / 2, height / 2])
.scale((width - 1) / 2 / Math.PI);

var zoom = d3.behavior.zoom()
.scaleExtent([1, 8])
.on("zoom", zoomed);

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

var svg = d3.select("#map")
.classed("svg-cont", true)
.append("svg")
.attr("preserveAspectRatio", "xMinYMin meet")
.attr("viewBox", "0 0 560 350")
.classed("svg-content-responsive", true)
.append("g");

svg
.call(zoom)
.call(zoom.event);

及以下

function zoomed() {
g.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}

最佳答案

如前所述,我使用的是旧版本的 D3。使用d3.v4,我发现我需要做的就是插入

.call(d3.zoom().on("zoom", function () {
svg.attr("transform", d3.event.transform)
}))

所以我得到了:

var svg = d3.select("#map")
.append("svg")
.attr("preserveAspectRatio", "xMinYMin meet")
.attr("viewBox", "0 0 700 300")
.classed("svg-content-responsive", true)
.call(d3.zoom().on("zoom", function () {
svg.attr("transform", d3.event.transform)
}));

而且有效!

关于javascript - 错误 - 放大 D3 map - d3.behavior 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48483756/

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