ECharts+高德地图,实现省份下的城市或者城市下面区县的地图

6,615 阅读3分钟

最近公司有一个数据可视化大屏的功能(给各地客户领导看的,说是看着有科技感),这个功能就开到了我这,因为客户在全国各个省份,有的是省级的,有的是市级的,登录之后,显示该省或者该市的各个数据情况,我也是第一回做这个省份或者城市的地图。

这种可视化的图表,第一个想到的是ECharts,就打开了EChartst的官网,找到一个类似的,上面是香港

image.png

分析了一下,上面只是有鼠标停留的数据,要是换到其他的城市,香港的地图也用不到其他的城市呀,又仔细看了一下,发现示例代码的第一行中,是一个ajax请求,就在控制台上打印了看了一下,这究竟是请求的啥

image.png

我一看返回的这些数据,这是涉及到我的知识盲区了,就问了公司的啥都会的后台,告诉我这叫 geojson ,让我自己去百度高德地图网站去找你要这个城市geojson,好吧,确实第一回知道这个知识点,我就在网上找了一下,百度地图的jeojson我没有找到,大家要是找到的话,在评论里说一下,找到了一个高德地图下载geojson的网址

datav.aliyun.com/tools/atlas…

image.png

我就下载了一个北京的,这个json还不小,在vscode打开格式化了看了一看,好家伙,一万七千多行的json.

image.png

北京市的geojson已经拿到了,先在本地写个小demo,跑通一下(这里是个简版的,提示数据之类的都先删除掉了,具体参数可以看一下ECharts的官方文档)

备注:在这里我为了方便,把下载好的.json改成了.js

<body>
  <div id="main" style="width: 1000px;height:500px;"></div>
</body>
<script src="./echarts.js"></script>
<script src="./bj.js"></script>
<script type="text/javascript">
  var myChart = echarts.init(document.getElementById('main'));

  echarts.registerMap('bj', bj);

  myChart.setOption(option = {
    title: {
      text: '北京市地图',
    },
    toolbox: {
      show: true,
      orient: 'vertical',
      left: 'right',
      top: 'center',
      feature: {
        dataView: { readOnly: false },
        restore: {},
        saveAsImage: {}
      }
    },
    series: [
      {
        name: '北京市地图',
        type: 'map',
        mapType: 'bj', // 
        label: {
          show: true
        }

      }
    ]
  });
</script>

怀着激动的心,我打开了页面

image.png

好不容易出来了,我又试了试其他的省份和城市,如河北省

image.png

做到这,已经成功了一大半了,可是目前有个小问题,就是当现实城市的时候,有些地区因为面积小的原因,城区的名字都推到了一块,这种情况,和产品经理讨论以后,做一个鼠标滚动放大,来解决这个问题,我在查了一下ECharts鼠标滚轮放大的api,试了半天dataZoom这个,加什么也不变大,后来发现,因为这次的地图,不能用这个,在这块耽误了很多时间,应该是在series这里设置

    series: [
      {
        name: '北京市地图',
        type: 'map',
        mapType: 'bj',
        label: {
          show: true
        },
        zoom: 1, //当前视角的缩放比例
        roam: true, //是否开启平游或缩放
        scaleLimit: { //滚轮缩放的极限控制
          min: 1,
          max: 2 //可以放大几倍
        }
      }
    ]

好了,一个最基础的显示省份下面的城市或者城市显示下面的区县完成,如果要是根据后台返回地区的账号显示该地区的地图,大家可以去高德地图注册一个开发者,上面有详细的高德地图文档,我在这里附上高德地图api的地址

lbs.amap.com/api/webserv…