setFocus调用后Jvectormap标记绘制错误

时间:2013-02-17 12:47:41

标签: javascript jvectormap

我想关注美国在选择美国州方面的问题。代码是这样的:

    var ddd = {
        "US-VA": 1,
        "US-PA": 1,
        "US-TX": 1,
        "US-RI": 1,
        "US-SC": 1,
        "US-OR": 1,
        "US-CO": 1,
        "US-KY": 1
    };
    var map = {};

  $(function(){
    map = new jvm.WorldMap({
        map: 'us_aea_en',
        backgroundColor: '#EEEEEE',
        container: $('#us-map'),
        regionsSelectable: true,
        regionsSelectableOne: true,
        regionStyle: {
            initial: {
                fill: '#777777',
                "fill-opacity": 1,
                stroke: 'none',
                "stroke-width": 0,
                "stroke-opacity": 1
            }
        },
        series: {
            regions: [{
                values: ddd,
                scale: ['#FF6633', '#FF6622'],
                normalizeFunction: 'linear'
            }]
        },
        markerStyle: {
        initial: {
        fill: '#F8E23B',
        stroke: '#383f47'
        }
        },
        markers: [
            {latLng: [41.17, -74.92], name: 'New York'},
            {latLng: [34.06, -118.25], name: 'Los Angeles'},
            {latLng: [29.98, -95.54], name: 'Houston'},
            {latLng: [42.42, -71.3], name: 'Boston'},
            {latLng: [32.79, -96.81], name: 'Dallas'},
            {latLng: [32.79, -79.95], name: 'Charleston'},
            {latLng: [38.02, -122.89], name: 'San Francisco'},
            {latLng: [35.17, -106.86], name: 'Albuquerque'},
            {latLng: [35.72, -97.99], name: 'Oklahoma City'},
            {latLng: [61.22, -149.91], name: 'Anchorage'},
            {latLng: [21.47, -158.08], name: 'Honolulu'}
        ],
        //onRegionSelected: function(event, isSelected, selectedRegions){
        onRegionSelected: function(selectedRegions){
            map.setFocus(9, selectedRegions);
        }
      });
    });

当我选择区域时,标记会在错误的位置绘制。看到一个小的移动,就像地图尝试setFocus,但标记在左上角。 我使用 jvectormap-1.1.1.min.js jquery-1.8.3.min.js

这是加载后的地图: enter image description here

选择州后的地图如下: enter image description here

有任何线索吗?

1 个答案:

答案 0 :(得分:1)

onRegionSelected方法的定义更改为:

onRegionSelected: function(e, code, isSelected,  selectedRegions){
     map.setFocus(selectedRegions);
}

setFocus方法最多可以接收3个参数。第一个是比例,区域代码或区域代码数组。第二个和第三个参数是centerXcenterY,用于指定视口的中心。

您发送了数字9作为第一个参数,然后发送事件对象的第二个参数发生了奇怪的事情。

此外,如果您为地图设置了regionsSelectableOne: false,您会看到它缩放到适当的级别以包含所选区域(状态)。