jvectormap渲染国家标签onRegionClick

时间:2017-09-10 06:28:46

标签: jvectormap

我正在使用JVectorMap。如果它们在地图创建期间定义,它会很好地呈现静态国家/地区标签,如示例http://jvectormap.com/examples/region-labels/

中所示

我的问题是:onRegionSelectedonRegionClick点火时是否可以显示国家/地区标签?

1 个答案:

答案 0 :(得分:0)

这真的很有趣!

无论如何,您只需应用hidden样式即可初始化固定标签。在那之后,这里棘手的部分是如何覆盖应用的样式。在我的例子中,我没有使用onRegionSelected回调中提供的任何参数,但我直接转到SVG元素。通过这样做,您将获得与onClickonRegionSelected事件兼容的功能。

  

以下是 DEMO

$(document).ready(function () {

  $("#map").vectorMap({
    map: "us_aea",
    backgroundColor: "aliceblue",
    zoomOnScroll: true,
    regionsSelectable: true,
    onRegionSelected: function(){
      var regions = $("#map").vectorMap("get", "mapObject").regions;
      var visible = "visibility: visible;", hidden = "";
      for(var key in regions) {
          var label = regions[key].element.label;
          if(label) {
            label.node.setAttribute('style', label.isSelected ? visible : hidden);
          }
      }
    },
    regionStyle: {
      initial: {
        fill: "lightgrey"
      },
      selected: {
        fill: "orange"
      }
    },
    labels: {
      regions: {
        render: function(code){
          var doNotShow = ['US-RI', 'US-DC', 'US-DE', 'US-MD'];
          if (doNotShow.indexOf(code) === -1) {
            return code.split('-')[1];
          }
        },
        offsets: function(code){
          return {
            'CA': [-10, 10],
            'ID': [0, 40],
            'OK': [25, 0],
            'LA': [-20, 0],
            'FL': [45, 0],
            'KY': [10, 5],
            'VA': [15, 5],
            'MI': [30, 30],
            'AK': [50, -25],
            'HI': [25, 50]
          }[code.split('-')[1]];
        }
      }
    }
  });
});
text.jvectormap-region {
  visibility: hidden;
}
<html>
<head>
  <title>jVectorMap Areas</title>
  <link rel="stylesheet" href="http://jvectormap.com/css/jquery-jvectormap-2.0.3.css" type="text/css">
  <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
  <script src="http://jvectormap.com/js/jquery-jvectormap-2.0.3.min.js"></script>
  <script src="http://jvectormap.com/js/jquery-jvectormap-us-aea.js"></script>
</head>
<body>
  <div id="map" style="width: 600px; height: 400px"></div>
</body>
</html>