这篇文章就是来救命的,专门解决你echarts geo调用json时地图不显示、坐标对不上、甚至直接报错的烂摊子。别再去网上抄那些过时的代码了,那些都是几年前的老黄历,根本跑不通。看完这篇,保证你少掉两根头发,直接能跑起来。
说真的,每次看到有人问echarts geo调用json为什么地图是空的,我就想砸键盘。这问题我都回答了八百遍了,还是有人犯同样的低级错误。我干了9年GIS和前端可视化,见过的奇葩bug没有一千也有八百,但最让人无语的就是对json文件路径的执念。
先说个真事儿。上周有个哥们找我帮忙,说他的echarts geo调用json死活出不来图。我一看代码,好家伙,路径写的相对路径,而且文件名还带个中文括号,这在Linux服务器上直接炸了。我让他把json文件放到跟html同级目录,结果他还是传参传错了。那种感觉,就像是你明明给了钥匙,他非要拿根筷子去开门,能开才怪。
echarts geo调用json的核心就两点:一是json格式要对,二是路径要准。很多新手拿着百度地图或者高德地图导出的geojson直接往ECharts里塞,结果发现根本加载不出来。为什么?因为ECharts需要的geojson格式跟其他GIS软件导出的略有不同,特别是properties字段,如果缺失或者结构不对,ECharts解析时会直接跳过,导致地图空白。
我一般推荐大家用阿里云的DataV.GeoAtlas,那个里面的json文件比较干净,适配性也好。下载下来之后,别急着改代码,先用VS Code或者Sublime Text打开看看结构。重点看features里的geometry,确保是Polygon或者MultiPolygon。如果是Point,那肯定显示不出面状地图。
还有个坑,就是跨域问题。很多人把json文件放在本地服务器或者Nginx上,结果浏览器报CORS错误。这时候echarts geo调用json就会失败。解决办法很简单,要么把json文件放到跟html同一个域下,要么在服务器配置里加上Access-Control-Allow-Origin。别一报错就怪ECharts,先检查你的网络环境。
记得有一次,我帮一个客户做项目,他们用的json文件是2018年的,省界数据早就变了,导致很多边界对不上。客户急得跳脚,说数据有问题。我查了半天,发现是json里的坐标系不对,ECharts默认是经纬度,有些旧数据可能是投影坐标,得转换。这种细节,不踩坑你永远不知道。
所以,总结一下,echarts geo调用json的时候,先确认json文件能独立加载,再确认格式符合ECharts要求,最后再处理样式和交互。别一上来就搞什么复杂的数据绑定,先把地图画出来再说。
我有个习惯,每次加载json之前,都会console.log一下数据长度,看看是不是0。如果是0,那肯定是路径错了或者文件没加载成功。这个习惯救了我无数次。别嫌麻烦,调试的时候这一步能省半小时。
最后,别指望代码能完美运行,总会有各种意外。保持耐心,多看文档,多试错。echarts geo调用json其实没那么难,难的是你总想走捷径。老老实实把基础打牢,比什么技巧都管用。
本文关键词:echarts geo调用json