所以我正在实现荷兰的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 。
希望有人能帮助我。
BREAKTHROUGH :
显然制作了3个标签实例。 0是左一,1是右一,2也是左一,但它们相互重叠。 我现在只需要知道如何删除其中两个实例。 该代码用于查看对象。 我可以在此处更改它,但是将label 1设置为null和pop()都无效。
onRegionTipShow: function (event, label, code) {
console.log(label)
},
});
答案 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)