当前位置: 首页 > news >正文

小学生做创客大赛网站的题不错的网站建设公

小学生做创客大赛网站的题,不错的网站建设公,郑州网络营销排名,竭诚网络网站建设价格echarts地图的简单使用 文章说明核心源码效果展示源码下载 文章说明 主要介绍echarts地图组件的简单使用,记录为文章,供后续查阅使用 目前只是简单的示例,然后还存在着一些小bug,主要是首个Legend的点击会导致颜色全部不展示的问题…

echarts地图的简单使用

    • 文章说明
    • 核心源码
    • 效果展示
    • 源码下载

文章说明

主要介绍echarts地图组件的简单使用,记录为文章,供后续查阅使用

目前只是简单的示例,然后还存在着一些小bug,主要是首个Legend的点击会导致颜色全部不展示的问题,以及世界地图的区域展示有一些小问题,等待后续完善

核心源码

地图绘制组件

<script setup>
import * as echarts from "echarts";
import china from "@/assets/china.json";
import world from "@/assets/world.json";
import {onBeforeMount, onMounted, reactive} from "vue";
import {getAreaList} from "@/assets/getAreaList";
import {calculateColor} from "@/util";const data = reactive({mapName: "china",chinaAreaList: [],selectedChinaAreaList: [],worldAreaList: [],selectedWorldAreaList: [],
});onBeforeMount(() => {const {chinaAreaList, worldAreaList} = getAreaList();data.chinaAreaList = chinaAreaList;data.worldAreaList = worldAreaList;
});const mapList = [{name: "china",data: china,},{name: "world",data: world,}
];let myChart;onMounted(() => {for (let i = 0; i < mapList.length; i++) {echarts.registerMap(mapList[i].name, mapList[i].data);}const chartDom = document.getElementById("basic-chart");myChart = echarts.init(chartDom);setOption();window.onresize = () => {myChart.resize();};
});const mapNameMap = {china: "中国地图",world: "世界地图",
}let min = 0;
let max = 10000;
let selectedAreaDataList = [];function setOption() {let selectedAreaList = [];if (data.mapName === "china") {selectedAreaList = data.selectedChinaAreaList;} else if (data.mapName === "world") {selectedAreaList = data.selectedWorldAreaList;}const series = [];const colors = [];const notSortArray = [];for (let i = 0; i < selectedAreaList.length; i++) {let selectedAreaData;for (let j = 0; j < selectedAreaDataList.length; j++) {if (selectedAreaDataList[j].name === selectedAreaList[i]) {selectedAreaData = selectedAreaDataList[j];break;}}let value;if (selectedAreaData) {value = selectedAreaData.value;} else {value = Math.ceil(Math.random() * max);selectedAreaDataList.push({value: value,name: selectedAreaList[i],});}notSortArray.push({value: value,name: selectedAreaList[i],});}notSortArray.sort(function (o1, o2) {return o1.value - o2.value;});if (!notSortArray.length) {colors.push("#ffffff", "#000000");}const legendNames = [];for (let i = 0; i < notSortArray.length; i++) {const color = calculateColor(notSortArray[i].value, min, max);colors.push(color);const seriesItem = {name: notSortArray[i].name,type: 'map',geoIndex: 0,data: [{name: notSortArray[i].name,value: notSortArray[i].value}],color: color,};series.push(seriesItem);legendNames.push(notSortArray[i].name);}myChart.setOption({title: {text: mapNameMap[data.mapName],left: "center",},geo: {map: data.mapName,label: {show: false,},},legend: {orient: 'vertical',bottom: "50px",left: '50px',itemHeight: 10,itemWidth: 30,textStyle: {fontSize: 12,rich: {a: {verticalAlign: 'middle',},},padding: [2, 0, 0, 0],},data: legendNames},series: series,visualMap: {left: 'right',min: min,max: max,inRange: {color: colors},text: ['High', 'Low'],calculable: true},toolbox: {show: true,feature: {saveAsImage: {show: true}}},}, true);
}
</script><template><div class="container"><div style="height: 6rem; display: flex; align-items: center; justify-content: center"><el-select v-model="data.mapName" style="width: 10rem; margin-right: 2rem" @change="setOption"><el-option label="中国地图" value="china"/><el-option label="世界地图" value="world"/></el-select><el-select v-show="data.mapName === 'china'" v-model="data.selectedChinaAreaList" collapse-tagscollapse-tags-tooltip filterable multiple placeholder="请选择地区" style="width: 30rem"@change="setOption"><template v-for="item in data.chinaAreaList" :key="item.id"><el-option :label="item.name" :value="item.name"/></template></el-select><el-select v-show="data.mapName === 'world'" v-model="data.selectedWorldAreaList" collapse-tagscollapse-tags-tooltip filterable multiple placeholder="请选择地区" style="width: 30rem"@change="setOption"><template v-for="item in data.worldAreaList" :key="item.id"><el-option :label="item.name" :value="item.name"/></template></el-select></div><div style="flex: 1"><div id="basic-chart" class="chart"></div></div></div>
</template><style lang="scss">
* {margin: 0;padding: 0;box-sizing: border-box;
}.container {width: 100vw;height: 100vh;display: flex;flex-direction: column;
}.chart {width: 100%;height: 100%;
}
</style>

根据值生成颜色的工具函数

function hsvToRgb(h, s, v) {const f = n => {const k = (n + h / 60) % 6;return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);};return [Math.round(f(5) * 255),Math.round(f(3) * 255),Math.round(f(1) * 255)];
}export function calculateColor(value, minValue, maxValue) {value = Math.max(minValue, Math.min(maxValue, value));const factor = (value - minValue) / (maxValue - minValue);const hue = (factor * 360) % 360;const saturation = 1 - factor;const valueV = 1;const [r, g, b] = hsvToRgb(hue, saturation, valueV);return `rgb(${r}, ${g}, ${b})`;
}

地图数据的下载,可以在该网站下载较为全面的中国地图的数据:DataV.GeoAtlas地理小工具系列

效果展示

中国地图
在这里插入图片描述

世界地图
在这里插入图片描述

源码下载

echarts地图组件的基本使用

http://www.yayakq.cn/news/799996/

相关文章:

  • 贞丰县建设局网站医疗器械展会2021列表
  • 专业柳州网站建设哪家好企业网站建设自己的官网
  • 东莞市网站seo内容优化泽州县住房保障和城乡建设局网站
  • 免费给别人开发网站棋牌软件开发平台
  • 网站建设的基础商城app开发方案
  • 比较好的网站开发服务商国外网页游戏网站
  • 网站建设优化价格网络推广入门教程
  • 平台网站制作公司苏州建设
  • 一个网站可以做多少关键字商标查询网入口
  • 石门县建设局网站优化大师是什么软件
  • 网站挂服务器后图片不显示信誉好的o2o网站建设
  • 小说网站开发 小说网站源码chatgpt网页
  • 可以用来展示的网站wordpress性能检测
  • 嘉兴做美食图片的网站营业执照几年不审自动注销
  • 网站排版怎么做机票搜索量
  • 十九冶成都建设网站档案信息网站建设情况
  • 北京门户网站开发天津网络科技有限公司
  • 小蜜蜂网站建设专业手机网站建设企业
  • 如何安装wordpress手机站导航百度关键词搜索量统计
  • 网页升级访问最新区域每天自动更新一个具体网站的seo优化
  • 成都网站建设新闻wordpress作者头像
  • 建设网站应注意些什么建筑行业征信查询平台
  • 织梦如何做网站留言功能汕头汽车网站建设
  • 网站维护好的方法单页网站制作教程
  • 湖南手机网站建设张家口网站建设费用
  • 广西平台网站建设报价googleseo新手怎么做
  • 河南网站建设价格大全淄博铭锐 网站建设
  • 在哪里找给公司做网站优化的人采集插件wordpress
  • 手机网站内容管理佛山网站
  • 易讯企业建站系统天津建设工程信息网的ca花钱吗