Echarts實現地圖下鑽+對應區域數據展示+右鍵返回上一級


Echarts版本是 echarts 4
有問題的小伙伴可以加群交流:475870039

研究了三天Echarts,終於實現了基於Echarts 實現地圖下鑽至縣區,加對應區域的數據展示。先看效果圖

后續更新研究的過程,建議要想使用用echarts的同學先去看官方文檔和示例,不要盲目的去搞。我前一天在弄數據添加到地圖上展示,自己在瞎搞了一天,也沒搞出過所以然來。后來去看了半天文檔,對着示例研究,終於把數據展示弄清楚了。接下來就是綁定數據就可以了,開心。

 

2018/3/26 更新

  1. 修改樣式,根據色階數值地圖塊顯示不同的顏色
  2. 按月份篩選數據,日期插件是原生的html5 input date
  3. 每個對應區域的下一級同樣按篩選月份顯示數據
  4. 實現右鍵返回,用到棧來實現
  5. 查找了 echarts 官方api文檔,鼠標事件myChart.on('contextmenu', ()=>{})
let canvas = document.getElementsByTagName("body") canvas.oncontextmenu = function(){return false;} myCharts.on('contextmenu,function(params){ //鼠標右鍵事件,顯示右鍵返回上一級 $('#context-menu').css({ left: params.event.offsetX, top: params.event.offsetY }) })
  1. 去掉瀏覽器默認右鍵菜單 + echarts右鍵事件
  2. 點擊地圖進入下一級的時候,把當前渲染好的數據入棧
  3. 右鍵返回上一級,數據出棧,重新渲染 (不知道能不能實現想瀏覽器一樣,單純的返回上一個頁面,而不需要重新渲染)

 

 

 添加功能:增加了圖例選擇功能,選擇不同的數據類型,展示不同的數據。

   1. 一開始的思路是想在原來的地圖通通過 圖例改變事件 的api 改變地圖數據,來展示。結果,實現邏輯太復雜,自己把自己繞暈了

   2. 經前輩指導,通過按鈕鏈接跳轉,copy4份地圖,數據改變就可以了,get

 

 

部分地圖下鑽代碼:

chart.on("click", function(params) { //隱藏右鍵返回菜單
$("#contextMenu").hide(); let tmpObj = {}; let d = []; if (params.name in provinces) { //二級直轄市數據渲染
 if (special.indexOf(params.name) >= 0) { let postData2 = { parentid: "provinceid", value: params.data.id }; Promise.all([ajaxRequest(getCityNumberUrl, searchtime, postData2)]).then( result => { let [curMonthResult, lastMonthData] = result; let tmp = []; if (curMonthResult.errcode == 1) { getAreaNumber( params.name, curMonthResult.msg[0].cityid, searchtime ); } }, error => { console.log("請求市級數據失敗", e); } ); } //如果點擊的是34個省、市、自治區,繪制選中地區的二級地圖
 $.getJSON(provinceJson + provinces[params.name] + ".json", function( data ) { echarts.registerMap(params.name, data); for (var i = 0; i < data.features.length; i++) { d.push({ name: data.features[i].properties.name }); } renderMap(params.name, d); if (params.data.id !== "undifiend") { getCityNumber(params.name, params.data.id, searchtime, data); } }); } else { //顯示縣級地圖
 $.getJSON(cityJson + cityMap[params.name] + ".json", function( data ) { echarts.registerMap(params.name, data); let d = []; for (var i = 0; i < data.features.length; i++) { d.push({ name: data.features[i].properties.name }); } renderMap(params.name, d); if (params.data.cityid) { let postData3 = { parentid: "cityid", value: params.data.cityid }; Promise.all([ ajaxRequest(getAreaNumberUrl, searchtime, postData3) ]).then( result => { let [curMonthResult, lastMonthData] = result; let tmp = []; if (curMonthResult.errcode == 1) { // console.log('204', res.msg[0].cityid, res.msg[0].city)
           //這里傳遞的城市名有問題“北京市”,渲染地圖的名字是“北京”,所以地圖名要用原來的名字渲染
 getAreaNumber(params.name, params.data.cityid, searchtime); } }, error => { console.log("請求市級數據失敗", e); } ); } }); }
地圖下鑽demo代碼: https://github.com/touxing/echarts3-chinese-map-drill-down.git
更新(2019-05-20)上傳mock數據
更新(2019-08-12)接入本地mock數據,線上預覽地址 由於線上無法讀取目錄文件列表,只能展示第一級數據,完整數據展示課下載demo本地運行,注意看 README.md 文件

轉自:https://blog.csdn.net/example440982/article/details/79672227

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM