Jvectormap悬停两次显示省名

时间:2018-09-26 13:59:10

标签: angular angular6 jvectormap jqvmap

所以我正在实现荷兰的jvectormap,现在将鼠标悬停在地图上时会得到该省的双名签。

IN HTML

 <div id="worldMap" style="height: 385px;"></div>

组件

var mapData = {
        "NL-ZH": 100000
    };
    $('#worldMap').vectorMap({
        map: 'nl_mill',
        backgroundColor: "transparent",
        zoomOnScroll: false,
        regionStyle: {
            initial: {
                fill: '#e4e4e4',
                "fill-opacity": 0.9,
                stroke: 'none',
                "stroke-width": 0,
                "stroke-opacity": 0
            }
        },

        series: {
            regions: [{
                values: mapData,
                scale: ["#AAAAAA","#444444"],
                normalizeFunction: 'polynomial'
            }]
        },
    });

如您在下面看到的两次,将生成一个 jvectormap-tip

enter image description here

希望有人能帮助我。

BREAKTHROUGH

enter image description here

显然制作了3个标签实例。 0是左一,1是右一,2也是左一,但它们相互重叠。 我现在只需要知道如何删除其中两个实例。 该代码用于查看对象。 我可以在此处更改它,但是将label 1设置为null和pop()都无效。

     onRegionTipShow: function (event, label, code) {
      console.log(label)
    },
});

2 个答案:

答案 0 :(得分:1)

查看jVectorMap源代码,在地图构造函数内部创建tip

jvm.Map = function(params) {
   ...
   this.createTip();
   ...
}

我认为,由于某些原因,多次创建了地图,但这只是猜测,因为您提到了角度分量。

您可以:

  • remove方法添加到您的组件并调用映射remove方法:

    $("#worldMap").vectorMap('get','mapObject').remove();
    

    ...因为这也会同时删除tip

    /**
      * Gracefully remove the map and and all its accessories, unbind event handlers.
    */
    remove: function(){
      this.tip.remove();
      this.container.remove();
      jvm.$('body').unbind('mouseup', this.onContainerMouseUp);
    }
    

    此外,我会使用类似的方法来清理地图:

    function removeMap() {
      var mapObj = $("#worldMap").vectorMap('get','mapObject');
      if (typeof mapObj.remove !== 'undefined')  {
        mapObj.remove();
        $("#worldMap").contents().remove();
      }
    }
    
  • 您可以修补jVectorMap源代码,以将tip附加到地图容器,而不是body(也要在页面中使用多个地图的情况下)。

    在jVectorMap中替换此行:

    //this.tip = jvm.$('<div/>').addClass('jvectormap-tip').appendTo(jvm.$('body'));
    this.tip = jvm.$('<div/>').addClass('jvectormap-tip').appendTo(this.container);
    

答案 1 :(得分:-1)

   onRegionTipShow: function (event, label, code) {
      console.log(label)
      label.splice(1,1);
      label.splice(2,1);
    },
});

enter image description here

如果有人遇到此问题。
通过拼接,您可以删除此类对象。

enter image description here