我正在使用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

您必须生成一个新的映射实例来重新加载这些值,并且向下钻取区域将被正确填充。

07-24 18:01
查看更多