我正在尝试使组合的地图/图表可视化工作。我希望能够在地图上将鼠标悬停/选择一个国家,并且不仅适用于该国家,还适用于代表该国家数据的图表上的线条(无论如何,假设过去十年的人口增长) .
在done
地图初始化部分,我使用回调highlightMap
并传入 countryName。理论上,当我将鼠标悬停在图表上时,图表也会调用它。
问题:1)在highlightMap
我尝试获取国家元素并更改其边框宽度时不起作用。获取地图子单元并对其应用效果的正确方法是什么?2)一般来说,这是正确的方法吗?
var map;
function setupMap(mouseoverCallback, mouseoutCallback) {
var width = mapWidth;
var height = mapHeight;
map = new Datamap({
element: document.getElementById(mapContainerDiv),
projection: 'mercator',
// responsive: true,
width: width,
height: height,
fills: {
defaultFill: "#ffffff"
},
geographyConfig: {
borderColor: '#000000',
},
data: {},
done: function(datamap) {
datamap.svg.selectAll('.datamaps-subunit').on('mouseover', function(geography) {
var countryName = geography.properties.name;
highlightMap(countryName);
});
datamap.svg.selectAll('.datamaps-subunit').on('mouseout', function(geography) {
var countryName = geography.properties.name;
highlightMap(countryName);
});
}
});
}
function highlightMap(name, highlight) {
var code = country2Code[name];
if (highlight) {
var countryElement = map.svg.select("#datamaps-subunit "+code);
countryElement.attr('stroke-width', 10); // Change border of country to something nutty
// reset color
...
}
}