jVectorMap无法检索地图对象

时间:2015-03-05 16:15:21

标签: javascript jquery jvectormap

我有一个jQuery矢量图定义如下:

<div id="worldMap" style="width:800px;height:550px"></div>

在JS onReady函数中:

$('#worldMap').vectorMap({
  map: 'world_en',
  backgroundColor: '#a5bfdd',
  color: '#f4f3f0',
  hoverColor: '#0000ff',
  hoverOpacity: null,
  selectedColor: '#666666',                
  attribute: 'fill',
  enableZoom: true,
  showTooltip: true, 
  values: sample_data,                 
  scaleColors: ['#ffffff', '#a00000'],
  normalizeFunction: 'polynomial',             
  onRegionClick: function(element,code,region) {
    displayInfo(code,region);    
  }
});

我设置一个计时器,每五分钟一次,以更新地图数据。它调用的函数是:

function updateMap() {         
  $.getJSON('docs/testdata.json',function(data) {
    var map=$("#worldMap").vectorMap('get','mapObject');
    map.series.region[0].setValues(data);
  });
}

地图在浏览器中正确显示所有数据点。调用updateMap()时会出现问题。它无法获取mapObject(始终为undefined)。认为这是某种时间问题,我在var map=$(...初始化地图中的定义之后立即将onready行移到了地图,而MAP仍然是undefined

2 个答案:

答案 0 :(得分:3)

另外,试试:

var obj = $('#world-map .jvectormap-container').data('mapObject');

然后:

obj.series.region[0].setValues(data);

答案 1 :(得分:0)

我有同样的问题

我用它来解决:

map = new jvm.Map({
    container: jQuery('#world-map'),
    map: "map",
    regionsSelectable: true,
    regionsSelectableOne: true,
    backgroundColor: 'transparent',
    zoomMax: 1,
    zoomMin: 1,
    zoomOnScroll: false
});
map.clearSelectedRegions();