最近接到一个需求,客户要做一个县级的矿产运输迁徙图,本来也没什么,但是本人是贵州的,贵州好多区县的GeoJson数据网上都没有(在这里膜拜一下这位大神的作品,可以下载全国大部分地区的GeoJson,灰常方便:http://gallery.echartsjs.com/editor.html?c=xr1IEt3r4Q)。
既然网上没有现成的,那就自己动手丰衣足食吧,在网上找到了可以获取指定区域的经纬度数据的HTML代码,如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取地区轮廓线</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3">
</script>
<style type="text/css">
body{font-size:13px;margin:10px}
#container{width:800px;height:500px;border:1px solid gray}
</style>
</head>
<body>
<div id="container"></div>
<br />
输入省、直辖市或县名称:<input type="text" id="districtName" style="width:80px" value="重庆市">
<input type="button" onclick="getBoundary()" value="获取轮廓线">
<textarea id="Div1" style="width:100%;height:200px"></textarea>
<script type="text/javascript">
var map = new BMap.Map("container");
map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5);
map.addControl(new BMap.NavigationControl({type: BMAP_NAVIGATION_CONTROL_SMALL}));
map.enableScrollWheelZoom();
function getBoundary(){
var bdary = new BMap.Boundary();
var name = document.getElementById("districtName").value;
bdary.get(name, function(rs){ //获取行政区域
map.clearOverlays(); //清除地图覆盖物
document.getElementById('Div1').innerText = rs.boundaries;
var count = rs.boundaries.length; //行政区域的点有多少个
for(var i = 0; i < count; i++){
var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
map.addOverlay(ply); //添加覆盖物
map.setViewport(ply.getPath()); //调整视野
}
});
}
</script>
</body>
</html>
输入区县名称就可以获取到经纬度数据
然后将经纬度数据格式化成GeoJson(GeoJson格式规范说明)
拿到GeoJson之后参照ECharts的GL迁徙图示例(http://gallery.echartsjs.com/editor.html?c=xBJjv35O6l)就可以制作想要的迁徙图了,这个很简单,我就不多做说明了。
另外点位的经纬度可以通过这个网站获取:http://www.gpsspg.com/maps.htm