Raphael US SVG 地图在值更改时不会重新着色
Raphael US SVG map not recoloring when values change
我正在使用这个基于 Raphael 的地图编写一些代码,它是一个 SVG jQuery 插件:http://newsignature.github.io/us-map/
我已经根据已推入对象 (statesObject) 的数组 (USA) 中的值(支持)为自己着色。
一切都很好,直到我重新定义支持值 - 就像对象识别值发生变化一样,无论我做什么,地图都保持不变。
欢迎您向我提供任何建议。相关代码如下。
$(document).ready(function() {
colorMap();
});
function colorMap(){
var statesObject = {};
for(var i = 0; i < USA.length; i++) {
var national = (USA[i]);
var colorState = national.id;
if (national.support < 50) {
statesObject[colorState] = {fill: '#cd3700'};
} else if (national.support >= 50){
statesObject[colorState] = {fill: '#232066'}
}
}
$('#map').usmap({stateSpecificStyles: statesObject})
}
function nationalChange(){
for(var i = 0; i < USA.length; i++) {
var national = (USA[i]);
national.support += 5;
}
}
据我所知,当您更改某些内容时无法更新地图,尤其是来自 外部 输入,即单击按钮或更新字段。
这可能有点老套,但我找到的最快解决方案是 重绘 地图,方法是删除地图并使用新值重新添加它。
function redrawMap() {
$('#map').remove()
var statesObject = {};
for(var i = 0; i < USA.length; i++) {
var colorState = USA[i].id
if (USA[i].support < 50) {
statesObject[colorState] = {fill: '#cd3700'}
} else if (USA[i].support >= 50){
statesObject[colorState] = {fill: '#232066'}
}
}
$('#container').append('<div id="map"></div>')
$('#map').usmap({ stateSpecificStyles: statesObject })
}
关键部分是 $('#map').remove()
从页面中删除地图,然后 $('#container').append('<div id="map"></div>')
将其添加回页面从而允许 重绘 .
我正在使用这个基于 Raphael 的地图编写一些代码,它是一个 SVG jQuery 插件:http://newsignature.github.io/us-map/
我已经根据已推入对象 (statesObject) 的数组 (USA) 中的值(支持)为自己着色。
一切都很好,直到我重新定义支持值 - 就像对象识别值发生变化一样,无论我做什么,地图都保持不变。
欢迎您向我提供任何建议。相关代码如下。
$(document).ready(function() {
colorMap();
});
function colorMap(){
var statesObject = {};
for(var i = 0; i < USA.length; i++) {
var national = (USA[i]);
var colorState = national.id;
if (national.support < 50) {
statesObject[colorState] = {fill: '#cd3700'};
} else if (national.support >= 50){
statesObject[colorState] = {fill: '#232066'}
}
}
$('#map').usmap({stateSpecificStyles: statesObject})
}
function nationalChange(){
for(var i = 0; i < USA.length; i++) {
var national = (USA[i]);
national.support += 5;
}
}
据我所知,当您更改某些内容时无法更新地图,尤其是来自 外部 输入,即单击按钮或更新字段。
这可能有点老套,但我找到的最快解决方案是 重绘 地图,方法是删除地图并使用新值重新添加它。
function redrawMap() {
$('#map').remove()
var statesObject = {};
for(var i = 0; i < USA.length; i++) {
var colorState = USA[i].id
if (USA[i].support < 50) {
statesObject[colorState] = {fill: '#cd3700'}
} else if (USA[i].support >= 50){
statesObject[colorState] = {fill: '#232066'}
}
}
$('#container').append('<div id="map"></div>')
$('#map').usmap({ stateSpecificStyles: statesObject })
}
关键部分是 $('#map').remove()
从页面中删除地图,然后 $('#container').append('<div id="map"></div>')
将其添加回页面从而允许 重绘 .