如何仅在jVectorMap中单击某个区域时显示工具提示,并让它打开?

时间:2015-01-29 23:01:51

标签: javascript jquery jvectormap

我正在使用此jVectorMap。默认情况下,它会在悬停时显示工具提示。

这是我想要实现的目标 -

  1. 仅显示工具提示点击 (部分工作但工具提示应位于鼠标光标上方。我无法弄清楚如何获取鼠标光标位置。)
  2. 让工具提示打开,直到用户明确点击关闭
  3. 代码:jsfiddle

    $('#map').vectorMap({
        map: "us_aea_en",
        backgroundColor: "transparent",
        regionStyle: {
            initial: {
                fill: "#818486"
            }
        },
        onRegionClick: function (e, code) {
            var map = $('#map').vectorMap('get', 'mapObject');        
            map.tip.show();
            map.tip.html(code + "<p>Click to Close</p>");
        },
        onRegionTipShow: function (e, tip, code) {
            e.preventDefault();
        }
    });
    

    欲望行为

    enter image description here

2 个答案:

答案 0 :(得分:8)

我按照你想要的方式工作并更新你的小提琴:http://jsfiddle.net/inanda/ufhz316z/5/

<强>的Javascript

 $('#map').vectorMap({
    map: "us_aea_en",
    backgroundColor: "transparent",
    regionsSelectable: true,
    regionsSelectableOne: true,
    regionStyle: {
        initial: {
            fill: "#818486"
        },
        selected: {
            fill: "#C0C0C0"
      }
    },
    onRegionClick: function (e, code) {
        var map = $('#map').vectorMap('get', 'mapObject');
        var customTip=$('#customTip');

        customTip.css({
          left: left,
          top: top
        })

        customTip.html(map.tip.text());
      customTip.show();
      customTip.append(code + "<p>Click to Close</p>");
        customTip.children("p").click(function(){
            map.clearSelectedRegions();
           customTip.hide(); 
        }) 

    },
    onRegionTipShow: function (e, tip, code) {
        e.preventDefault();
    }
});

var left,top;
$('#map').vectorMap('get', 'mapObject').container.mousemove(function(e){
   left = e.pageX - 40;
   top = e.pageY - 60;

});

<强> HTML

<div id="map"></div>
<div id="x"></div>
<div id="y"></div>
<div id="customTip" class="jvectormap-tip"></div>

<强> CSS

#map {
    width: 500px;
    height: 400px;
}

答案 1 :(得分:1)

您可以通过填充或描边参数突出显示所选区域。更多细节可以在jVectorMap的文档中找到。这是一个简短的例子:

regionStyle: {
   selected: {
      stroke: '#000',
      "stroke-width": 1.3,
      "stroke-opacity": 1
   }
},