echarts绘制3D地图实现平移、缩放
所需依赖
准备工作:main.js中引入依赖
先上图
代码直接复制粘贴就可以使用了,根据自己需求稍作修改就可以使用了
html代码部分
<div class="map"> <div id="3Dmap" class="main"></div> </div>
复制
js代码部分
var myChart = this.$echarts.init(document.getElementById("3Dmap")); this.$echarts.registerMap("haerbin", haerbin); var _this = this; this.option = { tooltip: { show: true, triggerOn: "mousemove", //鼠标hover地图区域时出现 trigger: "item", transitionDuration: 0, //直接出现提示框 formatter: function (params) { // console.log(params,'params') //返回的是dom结构,可以在这里写好样式,也可以使用下面的配置项去设置样式 return `<div style="position:absolute;left:10px;top:16px;width:8px;height:8px;background-color:#FD9A5A;"></div> <div class="tips" style="padding:12px;"> <h1 style="font-size:16px;">${params.name}</h1> <p style="font-size:16px;"> <span style="color:#03dbf3;font-size:30px;display:inline-block;padding:5px 0">${params.data.num}</span> </p> </div>`; }, //这里就是设置地图自带的弹框样式 borderColor: "#419bf9", borderWidth: 1, // padding: [0, 15], // backgroundColor: '#0a1d54', backgroundColor: "rgba(0,2,89,0.8)", borderRadius: 0, textStyle: { color: "#fff" }, }, series: [ { // name: "haerbin", type: "map3D", //需要使用3d地图 // type: 'map', map: "haerbin", //地图类型。echarts-gl 中使用的地图类型同 geo 组件相同 regionHeight: 3, //模型的高度 boxWidth: 70, //三维地图在三维场景中的宽度 boxDepth: 73, //三维地图在三维场景中的深度 top: "-15%", itemStyle: { normal: { //静态模式下显示的默认样式 borderColor: "#3f82e5", borderWidth: 2, // color: "#0a55ea", color: "rgba(8, 72, 197, 0.4)",//建议使用rgba设置透明度,使用opacity会导致文字变色 // opacity: 0.4, }, //阴影效果 emphasis: { // color:'#3f82e5',#0636A2 color: "#0a55ea", // opacity:0.5, label: { show: true, }, }, }, label: { show: true, fontSize: 18, formatter: (params) => { var str = params.data.name; // return params.data.name + "\n\n\n" + params.data.num; if (params.data.name == "平房区") { // return str= "<div style='width:10px;height:10px;border-radius:50%;color:#fff'>"+1+"</div>"; return (str = "①"); } if (params.data.name == "香坊区") { return (str = "②"); } if (params.data.name == "南岗区") { return (str = "③"); } if (params.data.name == "道外区") { return (str = "④"); } if (params.data.name == "道里区") { return (str = "⑤"); } return str; }, textStyle: { color: "white", }, }, viewControl: { minBeta: -360, maxBeta: 360, alpha: 50, center: [0, -10, -10], //位置点 distance: 100, //缩放比例,默认视角距离主体的距离,对于 globe 来说是距离地球表面的距离,对于 grid3D 和 geo3D 等其它组件来说是距离中心原点的距离。在 projection 为'perspective'的时候有效。 minDistance: 30, maxDistance: 140, panMouseButton: "left", rotateMouseButton: "middle", zoomSensitivity: 1, // autoRotate: true, //是否开启视角绕物体的自动旋转查看,可开启自行测试 }, data: this.list, }, ], }; myChart.setOption(this.option);
复制
绘制3D地图可能会引起地图上标注点,跟所需点有偏差的情况,这样需要去修改引用的json文件
地图json数据可以到DataV.GeoAtlas地理小工具系列下载或引用即可