【问题标题】:Switch maps in Jvectormap?在 Jvectormap 中切换地图?
【发布时间】:2013-02-20 23:54:53
【问题描述】:

我正在尝试使用 Jvectormap 在地图之间切换。

目前我有两个 div,一个“世界地图”和一个“美国地图”。美国地图已隐藏。当有人在世界地图上点击美国时,世界地图 div 会关闭,美国地图会打开,效果很好。

在显示美国地图时,我还展示了一个按钮,旨在将用户带回世界地图。但是,当单击它时,它会显示两个世界地图。我确定我在做一些根本错误的事情,但找不到任何关于此的文档。我会认为这是一件很平常的事情。

任何指针都会很棒。

DIVS 和后退按钮图片:

<table width="900" cellpadding="0" cellspacing="0" align="center">
<tr>
<td align="left"><img src="images/titletext.png"></td>
<td align="right"><img src="images/backtoworld.png" border="0" id="backtoworld" style="display:none;" onClick="showworldmap()"></td>
</tr>
</table>


</td>
</tr>
<Tr>
<Td align="center">

<div id="world-map" style="display:block;"></div>
<div id="us-map" style="display:none;"></div>

JQuery/JavaScript:

 function showusmap() {
      document.getElementById("world-map").style.display = 'none';
      document.getElementById("us-map").style.display = 'block';
      document.getElementById("backtoworld").style.display = 'block';

      openusmap()
 }

     function openusmap() {

      $('#us-map').vectorMap({
    map: "us_aea_en",
    normalizeFunction: 'polynomial',
    backgroundColor: 'transparent',
    regionStyle: {
    initial: {
    fill: '#128da7',
    }},
    onRegionClick: function(event, code){
            //  if (code == "US") { showmap('us_aea_en') }
    },

    series: {

        regions: [{
            values: {
                "US-CA":'#006633',
                "US-IL":'#006633',
                "US-IN":'#006633',
                "US-DC":'#006633',
                "US-WA":'#006633',
                "US-FL":'#006633',
                "US-TX":'#006633',
                "US-OR":'#006633',
                "US-OH":'#006633',
                "US-MS":'#006633',
                "US-OK":'#006633',
                "US-MI":'#006633',
                "US-PA":'#006633',
                "US-NY":'#006633',
                "US-MN":'#006633',
                "US-NC":'#006633',
                "US-GA":'#006633',
                "US-AL":'#006633',
                "US-VA":'#006633',
                "US-VT":'#006633',
                "US-CT":'#006633',
                "US-MO":'#006633',
                "US-AZ":'#006633',
                "US-NJ":'#006633',

                }
        }]
    }
})

  }


function showworldmap() {

     document.getElementById("us-map").style.display = 'none';
      document.getElementById("world-map").style.display = 'block';
      document.getElementById("backtoworld").style.display = 'none';

      openworldmap()
}

function openworldmap() {

        $('#world-map').vectorMap({
            map: "world_mill_en",
            normalizeFunction: 'polynomial',
            backgroundColor: 'transparent',
            regionStyle: {
            initial: {
            fill: '#128da7'

            }},
            onRegionClick: function(event, code){
                        if (code == "US") { showusmap()  }
            },

            series: {
                regions: [{
                    values: {
                        CZ:'#006633',
                        FR:'#006633',
                        IT:'#006633',
                        NL:'#006633',
                        US:'#006633',
                        CH:'#006633',
                        NO:'#006633',
                        SE:'#006633',
                        FI:'#006633',
                        AT:'#006633',
                        GR:'#006633',
                        CY:'#006633',
                        AU:'#006633',
                        BE:'#006633',
                        HU:'#006633',
                        GB:'#006633',
                        ZA:'#006633',
                        BR:'#006633',
                        CA:'#006633',
                        MX:'#006633',
                        PR:'#006633',
                        IL:'#006633',
                        PK:'#006633',
                        MY:'#006633',
                        JP:'#006633',
                    }
                }]
            }
        });
}

【问题讨论】:

  • 你找到解决办法了吗?
  • 我做到了,是的。我会通过电子邮件@chishaku 向您发送我所拥有的
  • 我在 gmail 的用户名
  • @DanJamesPalmer 从坟墓里挖出来,你是否有可能恢复你所做的并在线程中发布? :)

标签: javascript jquery html jvectormap


【解决方案1】:

您可以按照 Alex Williams 的建议进行操作,并在显示 Map 容器后触发 resize()。然后它会在你看到它之前被缩放(至少在你淡入的时候)。

var $container = $('#yourHiddenMap');
map = new jvm.WorldMap({
    container: $container,
    map: ...
});
$('#yourSwitchButton').click(function() {
    $container.fadeIn().resize();
});

【讨论】:

  • 感谢您引导我找到我需要的东西 -> $container.resize();
【解决方案2】:

我没有下载 vectorMap 库。但是,每次调用 openusmap() 时,您似乎都在将小部件加载到 $('#world-map') 上。我只会在美国和世界地图上初始化一次小部件,并使用 JQuery 的 toggle 函数来隐藏和显示地图。或者,您可以使用小部件的 destroy 方法或其他等效方法。

【讨论】:

  • 我会看看你的建议,谢谢你的意见!
  • 使用 .toggle 是否仅仅意味着隐藏并相应地显示我想要的 div?如果是这种情况,它将无法正常工作,因为在隐藏的 div 中初始化地图会在显示时生成一个很小的地图
猜你喜欢
  • 2017-04-03
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-11
  • 1970-01-01
相关资源
最近更新 更多