gpt4 book ai didi

javascript - 如何在d3 map 上动态改变一个国家的颜色

转载 作者:行者123 更新时间:2023-11-29 19:05:34 25 4
gpt4 key购买 nike

var COLOR = 'blue';
var map = new Datamap({
element: document.getElementById('map'),
responsive: false,
});

function changeColor(countryCode) {
map.updateChoropleth({
countryCode: COLOR
});
}

setInterval(function() {
changeColor('USA');
}, 2000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/topojson/1.6.9/topojson.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datamaps/0.5.8/datamaps.world.min.js"></script>
<div id="map"></div>

我有以下在 HTML 上呈现世界地图的 javascript。

var map = new Datamap({
element: document.getElementById('map'),
responsive: true,
});

function changeColor(countryCode) {
map.updateChoropleth({
countryCode: 'blue'
});
console.log(countryCode + '--> colorChange');
}

setInterval(function() {
changeColor('USA');
}, 2000);

我想在 2 秒后更新特定国家/地区的颜色。当我运行上面的代码时,函数 changeColor 每 2 秒调用一次,但是函数 map.updateChoropleth 似乎没有任何效果。以防万一,我更改以下代码段:

function changeColor(countryCode) {
map.updateChoropleth({
countryCode: 'blue'
});
console.log(countryCode + '--> colorChange');
}

function changeColor(countryCode) {
map.updateChoropleth({
"USA": 'blue'
});
console.log(countryCode + '--> colorChange');
}

该函数按预期工作。为什么这不起作用?

最佳答案

updateChoropleth 函数正在寻找字面上名为 countryCode 的属性键。

一个解决方案是填充一个对象并将其传递给函数:

var COLOR = 'blue';
var map = new Datamap({
element: document.getElementById('map'),
responsive: false,
});

function changeColor(countryCode) {
var obj = {};
obj[countryCode] = COLOR;
map.updateChoropleth(obj);
}

setInterval(function() {
changeColor('USA');
}, 2000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/topojson/1.6.9/topojson.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datamaps/0.5.8/datamaps.world.min.js"></script>
<div id="map"></div>

关于javascript - 如何在d3 map 上动态改变一个国家的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43153535/

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