当页面上有2个地图时,更改JvectorMap的颜色

时间:2012-06-19 21:59:05

标签: javascript jquery html jvectormap

我正在使用Jvectormap在我的页面上放置2张地图。 地图正常放置,一切都很好。它们被放置在两个不同的div中:

<div id="map1">
    </div>

<div id="map2">
    </div>

和Jquery:

$(function () {
    $('#map1').vectorMap({
        color: '#aaaaaa',
        backgroundColor: '#ffffff',
        hoverOpacity: 1,
        hoverColor: true
    });
});

$(function () {
    $('#map2').vectorMap({
        color: '#aaaaaa',
        backgroundColor: '#ffffff',
        hoverOpacity: 1,
    });
});

现在,当我尝试使用:

动态更改map2的颜色时
$("#map2").vectorMap("set", "colors", colorsDictionnary);

仅改变第一个的颜色。

只有在更改颜色时才会发生这种情况。即使我使用$("#map2")

,第一个也会改变它的颜色

如何在不触及map1的情况下更改map2的颜色?

非常感谢您的帮助,我真的需要它

1 个答案:

答案 0 :(得分:3)

这是否能达到您的目的?

http://jsfiddle.net/qFHyF/

这个答案建立在我在这里发布问题的答案的基础上: jvectormap region colors

<强>的JavaScript

(function() {
    var myCustomColorsOne = {
        'AU-SA': '#4E7387',
        'AU-WA': '#333333',
        'AU-VIC': '#89AFBF',
        'AU-TAS': '#817F8E',
        'AU-QLD': '#344B5E',
        'AU-NSW': '#344B5E',
        'AU-ACT': '#344B5E',
        'AU-NT': '#344B5E'
    };
    var myCustomColorsTwo = {
        'AU-SA': '#803300',
        'AU-WA': '#993D00',
        'AU-VIC': '#B24700',
        'AU-TAS': '#CC5200',
        'AU-QLD': '#E65C00',
        'AU-NSW': '#FF7519',
        'AU-ACT': '#FF8533',
        'AU-NT': '#FFB280'
    };
    var myCustomColorsThree = {
        'AU-SA': '#B8E186',
        'AU-WA': '#B8E186',
        'AU-VIC': '#B8E186',
        'AU-TAS': '#B8E186',
        'AU-QLD': '#B8E186',
        'AU-NSW': '#B8E186',
        'AU-ACT': '#B8E186',
        'AU-NT': '#B8E186'
    };

    mapOne = new jvm.WorldMap({
        map: 'au_merc_en',
        container: $('#ausieOne'),
        backgroundColor: '#EFF7FF',
        series: {
            regions: [{
                attribute: 'fill'}]
        }
    });

    mapTwo = new jvm.WorldMap({
        map: 'au_merc_en',
        container: $('#ausieTwo'),
        backgroundColor: '#EFF7FF',
        colors: '#3377CC',
        regionStyle: {
            initial: {
                fill: '#B8E186'
            }
        },
        series: {
            regions: [{
                attribute: 'fill'}]
        }
    });

    mapOne.series.regions[0].setValues(myCustomColorsOne);

    $("#color-changer").click(function() {
        var $that = $(this);
        if ($that.hasClass("green")) {
            $that.removeClass("green");
            mapTwo.series.regions[0].setValues(myCustomColorsTwo);
        } else {
            $that.addClass("green");
            mapTwo.series.regions[0].setValues(myCustomColorsThree);
        }
        return false;
    });

})();​

<强> HTML

<a href="#" id="color-changer" class="green">Change colors of Map Two</a>
<p>Map One</p>
<div style="width: 354px; height: 300px" id="ausieOne" data-projection="mill" data-name="au_mill_en"></div>
<p>Map Two</p>
<div style="width: 354px; height: 300px" id="ausieTwo" data-projection="mill" data-name="au_mill_en"></div>