天天看点

jvectormap世界地图/中国地图实例

作者:不溺过往

最近简单研究了下jvectormap,很不幸简简单单的就遇到了一个坑,原谅我水平低下,花了好长时间才解决,这里记录下,但愿其他同学能够避坑。

一、世界地图

首先是世界地图,不多说,直接上代码:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1"/>
  <link rel="stylesheet" media="screen" href="js/jquery-jvectormap-1.2.2.css" type="text/css"/>
  <script src="js/jquery-1.8.2.js" type="text/javascript" charset="utf-8"></script>
  <script src="js/jquery-jvectormap-1.2.2.min.js" type="text/javascript" charset="utf-8"></script>
  <script src="js/jquery-jvectormap-world-mill-en.js" type="text/javascript" charset="utf-8"></script>
  <script src="js/world-data.js" type="text/javascript" charset="utf-8"></script>
</head>
<body style="margin:auto">
  <div id="world-map" style="width: 100%; height: 700px"></div>
  </body>
  <script type="text/javascript">
  	$(function(){
  	          $('#world-map').vectorMap({
  	                map: 'world_mill_en',
  	                series: {
  	                  regions: [{
  	                    values: worldData,
  	                    scale: ['#C8EEFF', '#0071A4'],
  	                    normalizeFunction: 'polynomial'
  	                  }]
  	                },
  	                onRegionLabelShow: function(e, el, code){
  					  el.html(el.html()+ ' - '+worldData[code]); //这里是个坑,网上查到直接写的worldData,如果不加[code]显示不正常
  	                }
  	              });
  	      });
  </script>
</html>           

这里需要注意两点:

1.需要引入的js和css文件自己网上找,可以参考官方地址:https://jvectormap.com/download/,如果找不到,可以留言联系我。

2.world-data.js是需要引入的数据,格式如下:

var worldData = {
  "AF": 16.63,
  "AL": 11.58,
  "DZ": 158.97,
  "AO": 85.81,
  "AG": 1.1,
  "AR": 351.02,
  "CN": 5745.13,
};           

这里是一维数据,前面是国家代码,后面是数量,更多代码可以参考官网说明,如下:

https://jvectormap.com/maps/world/world/

二、中国地图

中国地图实现方法类似,代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1"/>
  <link rel="stylesheet" media="screen" href="js/jquery-jvectormap-1.2.2.css" type="text/css"/>
  <script src="js/jquery-1.8.2.js" type="text/javascript" charset="utf-8"></script>
  <script src="js/jquery-jvectormap-1.2.2.min.js" type="text/javascript" charset="utf-8"></script>
  <script src="js/jquery-jvectormap-cn-mill.js" type="text/javascript" charset="utf-8"></script>
  <script src="js/china-data.js" type="text/javascript" charset="utf-8"></script>
</head>
<body style="margin:auto">
  <div id="chain-map" style="width: 100%; height: 700px"></div>
  </body>
  <script type="text/javascript">
  	$(function(){
  	          $('#chain-map').vectorMap({
  	                map: 'cn_mill',
  	                series: {
  	                  regions: [{
  	                    values: chinaData,
  	                    scale: ['#C8EEFF', '#0071A4'],
  	                    normalizeFunction: 'polynomial'
  	                  }]
  	                },
  	                onRegionLabelShow: function(e, el, code){
  					  el.html(el.html()+ ' - '+chinaData[code]);

  	                }
  	              });
  	      });
  </script>
</html>           

这里和世界地图不同的地方主要是两点:

1.需要引入中国地图的js文件

2.数据表现不同,china-data.js中的格式如下:

var chinaData = {
  "CN-32": 16.63,
  "CN-52": 11.58,
  "CN-54": 158.97,
  "CN-10": 85.81,
  "CN-14": 1.1,
  "CN-37": 351.02,
  "CN-11": 5745.13,
};           

这里的CN-数字代表不同的省份,具体可以参考jvectormap官方说明,如下:

https://jvectormap.com/maps/countries/china/

好了,到这里地图的基本实现算是完成了,实现效果发不出来,大家可以自己尝试下, 如果有问题可以留言!实际应用中只需要往china-data.js、world-data.js这两个文件中填充数据就行了。另外,本次的数据都是单维数据,如果想要填充一些多维数据,可以参考网上的示例,如果我有深入研究,也会及时贴出来!