echarts画精确到街道的地图

news/2025/1/24 20:09:30/

最终效果图:
在这里插入图片描述

  1. 精确到区的可以先去获取区级的轮廓图:
    阿里云
    在这里插入图片描述
    右侧有JSON文件,复制进项目即可。
  2. 需要精确到乡镇、街道,获取对应的街道轮廓KML:
    北斗
    在这里插入图片描述目前没发现批量下载的方法,几个街道就下载几次,收集好下载的所有kml
  3. 目前准备工作做完了,需要拼接所有信息,获得最终JSON文件:
    GeoJson
    在这里插入图片描述
    这里注意一下,目前这个站点不知道是不是地域屏蔽了,第一需要梯子,第二需要梯子选择美国站点才能顺利进去。
  4. echarts引入JSON,但是区级JSON引入项目报错,目前版本是5.4.0,

Uncaught Error:Invalid geoJson format Cannot read property ‘length‘ of undefind

可以看出来是echarts自己本身解析的问题,没能解析出来“GeometryCollection”
需要在node_modules中把echarts文件改了,路径是

node_modules\echarts\lib\coord\geo\parseGeoJson.js

找到parseGeoJSON函数,直接无脑复制粘贴:

export default function parseGeoJSON(geoJson, nameProperty) {geoJson = decode(geoJson);return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {if (featureObj.geometry.geometries) {let geometry = featureObj.geometry.geometries.map(i => {return i.coordinates;});let { type, properties, ...params } = featureObj;return { type, properties, geometry };}// Output of mapshaper may have geometry nullreturn featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;}), function (featureObj) {var properties = featureObj.properties;var geo = featureObj.geometry;var geometries = [];switch (geo.type) {case 'Polygon':var coordinates = geo.coordinates; // According to the GeoJSON specification.// First must be exterior, and the rest are all interior(holes).geometries.push(new GeoJSONPolygonGeometry(coordinates[0], coordinates.slice(1)));break;case 'MultiPolygon':zrUtil.each(geo.coordinates, function (item) {if (item[0]) {geometries.push(new GeoJSONPolygonGeometry(item[0], item.slice(1)));}});break;case 'LineString':geometries.push(new GeoJSONLineStringGeometry([geo.coordinates]));break;case 'MultiLineString':geometries.push(new GeoJSONLineStringGeometry(geo.coordinates));case 'GeometryCollection': { let geometry = {type: 'Polygon'};let coordinatesArr = featureObj.geometry.geometries.map(i => {return i.coordinates;})geometry.coordinates = coordinatesArr;coordinatesArr.forEach(i => {geometries.push({type: "polygon",exterior: i[0],interiors: i.slice(1)});});break;}}var region = new GeoJSONRegion(properties[nameProperty || 'name'], geometries, properties.cp);region.properties = properties;return region;});
}

再次保存,即可看到街道图

  1. 但是手动打补丁,本地似乎改好了,但是如果有其他同事拉代码,那包还是没更新,还是没用,所以我们需要把这个补丁打进云端:
    下载patch-package

npm install patch-package --save-dev

在package.json中新增一条命令:

“postinstall”: “patch-package”

在这里插入图片描述
执行:

npx patch-package 更改依赖的包名

自动生成一个文件:
在这里插入图片描述
后续正常提交就可以了,手动打了这个补丁,后续npm i时也会有更改的代码


http://www.ppmy.cn/news/385395.html

相关文章

慢加载+瀑布图

内容 多个等宽的图片进行穿插排序成六列&#xff0c;并且在目前显示的最后一张图片显示之后&#xff0c;再进行下拉时能够在进行加载其他图片&#xff0c;每次下拉显示20-30张图片。 原理 不同大小图实现瀑布效果 用if判断轮动距离实现对字标签的增加 代码 <!DOCTYPE html&…

GIS地图怎么做?看这篇就够了

今日使用产品 Yonghong Desktop 01场景 1多层地图展现 在分析产品全国的销售数据情况时&#xff0c;期望在地图上既展示各大区的销售总额&#xff0c;同时又能展示各省份自己的销售情况。 在以往我们只能通过地图下钻&#xff0c;来分别展现不同地理层级的数据指标。现在除…

echarts中的树形结构图(参数分析)

先上echarts官网示例图&#xff0c;可以点开链接查看&#xff0c;这里先上一张截图&#xff0c;以及官网代码 官网代码&#xff1a; myChart.showLoading(); //显示Loading标志&#xff1b; var myChart echarts.init(document.getElementById(页面中div的id)); $.get(da…

echarts 画中国地图

数据可视化平台&#xff0c;中国各省数据和坐标 阿里云可视化 效果 使用echart画中国地图&#xff0c;步骤如下 1.安装依赖 npm i echarts4 创建一个js文件 当你可以访问https请求的时候则使用&#xff0c;如下代码 import axios from "axios"; export default a…

一组绝美风景图

好美的风景啊&#xff0c;用来养眼不错的&#xff01;

自然风光

春天的细雨总是绵绵不断地下个不停&#xff0c;天空像一个发着脾气的小孩&#xff0c;时怒时喜&#xff0c;捉摸不定&#xff0c;似乎在戏弄我们。 雨过天晴,举目四望,但见朵朵白云好像牡丹怒放,脱出早晨灿烂的太阳. 而春天&#xff0c;则笑意盎然&#xff0c;昂首阔步&#xf…

echarts如何画地图

前情提要 用echarts画地图的方式有两种 通过真实的地图来画(百度地图、google地图、或者其它某种地图软件)去拿到某块区域的json文件来画第一种方式,可以前往 https://blog.csdn.net/glorydx/article/details/127656301查看具体如何实现 echarts 获取json文件来画地图 如…

眼图、星座图、瀑布图

眼图&#xff1a; https://blog.csdn.net/sternlycore/article/details/89405134?ops_request_misc%257B%2522request%255Fid%2522%253A%2522159064102819724839234747%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id1590641028…