如何根据 Json 响应更改 jqvmap 上的状态颜色?
How to Change states color on jqvmap based on a Json response?
我已经在服务器中实现了这张美国地图,但我试图根据 mysql 响应更改某些州的颜色,但我没能做到
这是我的代码
<script type="text/javascript" src="includes/js/jquery-2.1.0.min.js">
</script>
<script src="includes/js/jquery.vmap.js"></script>
<script src="includes/js/jquery.vmap.canada.js"></script>
<script src="includes/js/jquery.vmap.usa.js"></script>
<script>
$(document).ready(function(){
var states_colors = {};
var states = {};
$.post("state_service.php", function(data) {
var states_data = data.split(',');
for (var i = 0; i < states_data.length; i++) {
states[i] = states_data[i].replace(/[""\[\]]+/g, '');
states_colors[i] = states[i]+': #8EE5EE,';
};
console.log(states_colors);
$('#vmap').vectorMap('set', 'colors', states_colors);
});
$('#vmap').vectorMap({
map: 'usa_en',
backgroundColor: null,
color: '#F58025',
hoverColor: '#754200',
selectedColor: '#754200',
enableZoom: false,
showTooltip: false,
onRegionClick: function(element, code)
{
var arr = [];
arr = code.split('-');
var url = 'search.php?';
var query = 'keywords=&city=&state='+arr[1];
window.location.href = url + query;
}
});
});
</script>
<div id="vmap" style="width: 600px; height: 600px;"></div>
这就是 Json 回复带给我的,我想强调的是哪些状态
["AB","CO","UT"]
只需更改脚本的顺序
首先初始化 vectormap
然后调用状态颜色..
第二次猜
初始化 document.ready
中的 vectormap
第三次尝试
使 state_color 数组成为全局数组,然后在 vectormap 初始化中调用数组
例如
states_colors = {};
states_colors ['AB'] = '#A4D886';
states_colors ['UT'] = '#FCECA2';
states_colors ['CO'] = '#8EE5EE ';
$('#vmap').vectorMap({
colors: states_colors,
map: 'usa_en',
backgroundColor: null,
hoverColor: '#754200',
selectedColor: '#754200',
enableZoom: false,
showTooltip: false,
onRegionClick: function(element, code)
{
var arr = [];
arr = code.split('-');
var url = 'search.php?';
var query = 'keywords=&city=&state='+arr[1];
window.location.href = url + query;
}
});
如果你能复制下面FIDDLE中的情况
根据文档,以下函数是正确的
$('#vmap').vectorMap('set', 'colors', states_colors);
但是 setColors 函数将键和颜色作为参数。所以我改为关注,它开始工作
$('#vmap').vectorMap('set', 'colors', states[i], '#8EE5EE');
示例:http://codepen.io/anon/pen/RPjJYb
为站点使用了以下库
http://jqvmap.com/js/vmap/jquery.vmap.js?v=1.0
http://jqvmap.com/js/vmap/jquery.vmap.usa.js?v=1.0
我已经在服务器中实现了这张美国地图,但我试图根据 mysql 响应更改某些州的颜色,但我没能做到
这是我的代码
<script type="text/javascript" src="includes/js/jquery-2.1.0.min.js">
</script>
<script src="includes/js/jquery.vmap.js"></script>
<script src="includes/js/jquery.vmap.canada.js"></script>
<script src="includes/js/jquery.vmap.usa.js"></script>
<script>
$(document).ready(function(){
var states_colors = {};
var states = {};
$.post("state_service.php", function(data) {
var states_data = data.split(',');
for (var i = 0; i < states_data.length; i++) {
states[i] = states_data[i].replace(/[""\[\]]+/g, '');
states_colors[i] = states[i]+': #8EE5EE,';
};
console.log(states_colors);
$('#vmap').vectorMap('set', 'colors', states_colors);
});
$('#vmap').vectorMap({
map: 'usa_en',
backgroundColor: null,
color: '#F58025',
hoverColor: '#754200',
selectedColor: '#754200',
enableZoom: false,
showTooltip: false,
onRegionClick: function(element, code)
{
var arr = [];
arr = code.split('-');
var url = 'search.php?';
var query = 'keywords=&city=&state='+arr[1];
window.location.href = url + query;
}
});
});
</script>
<div id="vmap" style="width: 600px; height: 600px;"></div>
这就是 Json 回复带给我的,我想强调的是哪些状态
["AB","CO","UT"]
只需更改脚本的顺序
首先初始化 vectormap
然后调用状态颜色..
第二次猜
初始化 document.ready
vectormap
第三次尝试
使 state_color 数组成为全局数组,然后在 vectormap 初始化中调用数组
例如
states_colors = {};
states_colors ['AB'] = '#A4D886';
states_colors ['UT'] = '#FCECA2';
states_colors ['CO'] = '#8EE5EE ';
$('#vmap').vectorMap({
colors: states_colors,
map: 'usa_en',
backgroundColor: null,
hoverColor: '#754200',
selectedColor: '#754200',
enableZoom: false,
showTooltip: false,
onRegionClick: function(element, code)
{
var arr = [];
arr = code.split('-');
var url = 'search.php?';
var query = 'keywords=&city=&state='+arr[1];
window.location.href = url + query;
}
});
如果你能复制下面FIDDLE中的情况
根据文档,以下函数是正确的
$('#vmap').vectorMap('set', 'colors', states_colors);
但是 setColors 函数将键和颜色作为参数。所以我改为关注,它开始工作
$('#vmap').vectorMap('set', 'colors', states[i], '#8EE5EE');
示例:http://codepen.io/anon/pen/RPjJYb
为站点使用了以下库
http://jqvmap.com/js/vmap/jquery.vmap.js?v=1.0
http://jqvmap.com/js/vmap/jquery.vmap.usa.js?v=1.0