我正在使用JVectorMap在地图上显示一些访问数据这是密码。
var euroMap = new jvm.MultiMap({
container: $('#map'),
regionsSelectable: true,
regionsSelectableOne: true,
maxLevel: 1,
main: {
map: 'europe_mill',
backgroundColor: 'transparent',
regionStyle: {
initial: {
fill: 'white',
"fill-opacity": 1,
stroke: '#000',
"stroke-width": 0.3,
"stroke-opacity": 1
},
},
series: {
regions: [{
scale: ['#FFFFFF', '#DB715C'],
values: gon.map_data['ptps'],
normalizeFunction: 'polynomial'
}]
},
onRegionTipShow: function(event, label, index){
label.html(
'<b>'+label.html()+'</b></br>'+
'<b>#{t 'navbar.views'}: </b>'+(gon.map_data['views'][index]==undefined ? "0" : gon.map_data['views'][index])+'</b></br>'+
'<b>#{t 'navbar.ptps'}: </b>'+(gon.map_data['ptps'][index]==undefined ? "0" : gon.map_data['ptps'][index])+'</b></br>'+
'<b>#{t 'navbar.payments'}: </b>'+(gon.map_data['payments'][index]==undefined ? "0" : gon.map_data['payments'][index])+'</b></br>'+
'<b>Payed/Viewed: </b>'+(gon.map_data['v_p_ratio'][index]==undefined ? "0" : gon.map_data['v_p_ratio'][index])+'%<br/>'+
'<b>Negotiated/Viewed: </b>'+(gon.map_data['v_n_ratio'][index]==undefined ? "0" : gon.map_data['v_n_ratio'][index])+'%<br/>'+
'<b>Payed/Negotiated: </b>'+(gon.map_data['n_p_ratio'][index]==undefined ? "0" : gon.map_data['n_p_ratio'][index])+'%<br/>'
);
},
onViewportChange: function(event, scale) {},
onRegionOver: function(event, code) {},
onRegionClick: function(event, code) {}
},
mapUrlByCode: function(code, multiMap){
return '/assets/maps/'+code.toLowerCase()+'_'+multiMap.defaultProjection+'.js';
}
});
如果我有一个运行此代码的下拉按钮(coffeescript),会发生什么
$('.map_selector').click (event) ->
event.preventDefault()
map = $('#map .jvectormap-container').data('mapObject')
map.series.regions[0].clear()
map.series.regions[0].setValues(gon.map_data[event.currentTarget.dataset.filter])
map.series.regions[0].setScale(['#FFFFFF', '#DB715C'])
它应该重新设置地图的比例和值,并根据新的数据为地图上色。
基础地图是欧洲地图,在这个地图中工作时,一切正常,当我更改地图选择器时,所有的地图颜色都会根据新值再次更改,但是当我单击任何国家以查看该地区的数据时,不起作用,无论我更改多少次de map选择器,这些地区都保持相同的颜色。
有人知道为什么吗?
提前谢谢
最佳答案
最后,我可以通过在每次值更改时创建一个新的映射实例来解决这个问题,因为在一个向下钻取的映射中,每次更改值都会影响通用映射,在我的例子中是欧洲,但不会影响子区域。
所以,与其这样
map.series.regions[0].setValues
您必须生成一个新的映射实例来重新加载这些值,并且向下钻取区域将被正确填充。