【问题标题】:JVectorMap - Selecting a Region Using a ButtonJVectorMap - 使用按钮选择区域
【发布时间】:2013-07-27 01:10:07
【问题描述】:

我正在使用 J Vector Map (http://jvectormap.com/documentation/javascript-api/) 创建美国地图。

我希望能够为每个州提供一个按钮,您可以单击该按钮并选择地图中的相应区域(或取消选择,如果已选择)。我正在尝试为此使用 map.setSelectedRegion,但我无法让任何代码工作。目前尝试 map.setSelectedRegion("US-CA") 无济于事。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: jvectormap


    【解决方案1】:

    似乎有很多用jvectormap链接链接的请求。

    我在这里整理了一个 jsfiddle:http://jsfiddle.net/3xZ28/117/

    HTML

    <ul id="countries">
      <li><a href="">Romania</a></li>
      <li><a href="">Australia</a></li>
    </ul>
    <div id="world-map" style="width: 600px; height: 400px"></div>
    

    JS

    var wrld = {
      map: 'world_mill_en',
      regionStyle: {
        hover: {
            "fill": 'red'
        }
      }
    };
    
    function findRegion(robj, rname) {
        var code = '';
        $.each(robj, function (key) {
            if ( unescape(encodeURIComponent(robj[key].config.name)) === unescape(encodeURIComponent(rname)) ) {
                code = key;
            };
        });
        return code;
    };
    
    $(document).ready(function () {
        $('#world-map').vectorMap(wrld);
        var mapObj = $('#world-map').vectorMap('get', 'mapObject');
    
        $('#countries').on('mouseover mouseout', 'a:first-child', function (event) {
            // event.preventDefault();
            var elem = event.target,
                evtype = event.type,
                cntrycode = findRegion(mapObj.regions, $(elem).text());
    
            if (evtype === 'mouseover') {
                mapObj.regions[cntrycode].element.setHovered(true);
            } else {
                mapObj.regions[cntrycode].element.setHovered(false);
            };       
        });
    });
    

    【讨论】:

      【解决方案2】:

      设置好句柄后

      var mapObject = $('#your_map_div_id').vectorMap('get', 'mapObject');
      

      只需使用内置函数 setSelectedRegions(注意“s”):

      mapObject.setSelectedRegions(your_region_code); //to set
      mapObject.setSelectedRegions({your_region_code:false}); //to unset
      

      如果它仍然不起作用,请发布您的代码,也许是别的东西。

      【讨论】:

        【解决方案3】:

        此代码已过时,以下是代码的更新版本,根据 jvectormap 最新 API。这里是演示 sn-p:

        <!DOCTYPE html>
        <html>
        <head>
          <title>jVectorMap demo</title>
          <link rel="stylesheet" href="jqvmap.min.css" type="text/css" media="screen"/>
          <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
          <script src="jquery.vmap.min.js"></script>
          <script src="jquery.vmap.world.js"></script>
        
           <script>
                jQuery(document).ready(function () {
                    $('#vmap').vectorMap({
                        map: 'world_en',
                        backgroundColor: '#2f95c9',
                        color: '#ffffff',
                        hoverOpacity: 0.7,
                        selectedColor: '#666666',
                        enableZoom: true,
                        showTooltip: true,
                        scaleColors: ['#C8EEFF', '#006491'],
                        normalizeFunction: 'polynomial',
                        regionsSelectableOne: false,
                        regionsSelectable: false,
                        series: {
                        regions: [{
                          scale: ['#C8EEFF', '#0071A4'],
                          normalizeFunction: 'polynomial'
                        }]
                        }
                    });
        
                    var mapObj = $('#vmap').data('mapObject');
        
                    $('#countries').on('mouseover mouseout', 'a:first-child', function (event) {
                        // event.preventDefault();
                        var elem = event.target,
                            evtype = event.type;
        
        
                        if (evtype === 'mouseover') {
                            mapObj.select($(elem).attr('id'));
                        } else {
                            mapObj.deselect($(elem).attr('id'));
                        };
                    });
              });
            </script>
        
        </head>
        <body>
        <ul id="countries">
          <li><a id="RO" href="">Romania</a></li>
          <li><a id="AU" href="">Australia</a></li>
        </ul>
            <div id="vmap" style="width: 100vw; height: 100vh;"></div>
        </body>
        </html>
        

        【讨论】:

        • 如何在一个悬停目标属性上选择多个区域?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-13
        • 1970-01-01
        • 2012-06-10
        • 2016-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多