vue3+echarts5绘制地图后怎么添加标签?-灵析社区

强哥喝假酒

![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250109/8db83b606f794d719c0f037ca663fd52.png) 绘制出来大致是这样的,问题是:页面右侧我有一个列表,点击后传入地图几个国家名称,然后在地图上国家附近展示个tips,显示xxx,然后再点击这个xxx的时候调用其他函数 不会搞,帮忙看看 import { ref, onMounted } from "vue"; import * as echarts from "echarts/core"; import { TitleComponent, TooltipComponent, GridComponent, GeoComponent, } from "echarts/components"; import { MapChart } from "echarts/charts"; import { CanvasRenderer } from "echarts/renderers"; import world from "@/data/africa.json"; echarts.use([ TitleComponent, TooltipComponent, GridComponent, GeoComponent, MapChart, CanvasRenderer, ]); function getAllNames(data) { const names = []; data.features.forEach((feature) => { if (feature.properties && feature.properties.name) { names.push({ name: feature.properties.name }); } }); return names; } const map = ref(null); const mapInstance = ref(); const drawMap = () => { const option = { backgroundColor: "#9bcffa", tooltip: { trigger: "item", enterable: true, formatter: function ({ name, data }) { console.log(name, data); return name; }, }, geo: { map: "world", center: [50, 5], roam: true, zoom: 1.5, scaleLimit: { // min: }, label: { normal: { // show: true, }, }, tooltip: { //设置鼠标移至城市板块选中视图配置选项 // backgroundColor: " rgba(3,21,42,0.80)", //设置地图高亮时城市视图背景色框 borderRadius: 0, trigger: "item", formatter: (params) => { return ` ${params.name} `; }, }, // itemStyle: { // normal: { // borderWidth: 2, //设置边线粗细度 // opacity: 0.6, //设置透明度,范围0~1,越小越透明 // areaColor: "#63B8FF", //地图区域颜色 // }, // emphasis: { // areaColor: "#7FFF00", //高亮时地图区域颜色 // }, // }, nameMap: { Africa: "非洲", Algeria: "阿尔及利亚", }, emphasis: { itemStyle: { areaColor: "#2B91B7", }, show: true, areaColor: "#3066ba", //鼠标滑过区域颜色 label: { show: true, textStyle: { color: "#fff", }, }, }, }, series: [ ], }; mapInstance.value.setOption(option); mapInstance.value.on("click", (param) => { console.log(param); }); }; onMounted(() => { mapInstance.value = echarts.init(map.value); echarts.registerMap("world", world); drawMap(); }); #map { width: 100%; height: 600px; }

阅读量:373

点赞量:7

问AI
import { ref, onMounted } from "vue"; import * as echarts from "echarts/core"; import { TitleComponent, TooltipComponent, GridComponent, GeoComponent, } from "echarts/components"; import { MapChart } from "echarts/charts"; import { CanvasRenderer } from "echarts/renderers"; import world from "@/data/africa.json"; import { africaXY } from "@/data/africaXY.js"; echarts.use([ TitleComponent, TooltipComponent, GridComponent, GeoComponent, MapChart, CanvasRenderer, ]); const selectedCountries = ref(["Algeria"]); function getAllNames(data) { const names = []; data.features.forEach((feature) => { if (feature.properties && feature.properties.name) { names.push({ name: feature.properties.name }); } }); return names; } const convertData = (data) => { var res = []; for (var i = 0; i { const option = { backgroundColor: "#132538", tooltip: { trigger: "item", enterable: true, }, geo: { map: "world", center: [50, 5], roam: true, zoom: 1.3, scaleLimit: { // min: }, label: { normal: { // show: true, }, }, tooltip: { trigger: "item", padding: 0, enterable: true, transitionDuration: 1, textStyle: { color: "#818A91", decoration: "none", }, backgroundColor: "rgba(255,255,255,0.96)", // borderColor:'#000000', //borderWidth: 1, formatter: function (params) { // var tipHtml = ""; // tipHtml = // '' + // '' + // params.name + // "" + // '2018年整体进口额为10000323万元;' + // '2018年整体进口所占份额为13%;' + // '2018年年进口额增长率为-10%;' + // ""; return params.name; }, }, // itemStyle: { // normal: { // borderWidth: 2, //设置边线粗细度 // opacity: 0.6, //设置透明度,范围0~1,越小越透明 // areaColor: "#63B8FF", //地图区域颜色 // }, // emphasis: { // areaColor: "#7FFF00", //高亮时地图区域颜色 // }, // }, nameMap: { Africa: "非洲", Algeria: "阿尔及利亚", }, emphasis: { itemStyle: { areaColor: "#2B91B7", }, show: true, areaColor: "#131834", //鼠标滑过区域颜色 label: { show: true, textStyle: { color: "#fff", }, }, }, }, series: [ { type: "scatter", coordinateSystem: "geo", data: convertData([{ name: "Algeria"}]), zlevel: 12, // symbolSize: [20, 37], // 标记的大小,[宽、高] //symbol: 'pin', //气泡 // symbol: // "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAlCAYAAABCr8kFAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsSAAALEgHS3X78AAAC1klEQVRIx+2WS0gVURjHf6OXvD4jM1+ZVhJmWNfwolmhqxaWRFQgLcwIWkVFG90EEUGhmyBKcpdUCGaPhenClZDgq8iyMqy8lo+0C5nPaz6+FndGx7mP5rqIFv3hwJnvO+d3zjffOd+MggnF1l8WM+MAgswONCtLIINHC68of32H/4H/INCrRCRYRE6LyCMR6RmeGZePk04Rkaeq3fxGRMQmIr3iXx9EZLcZWKEEpkJ/sJQAYZqS9BxFB+wEsrRn1+Ist4fv8tjZyNCvERLXxHE0poCzCaewBoXoGa2KouSuAIrIPuC5ZpxZdHHi3UU6J7o9IrFHZlCz4wahQVa9OUdRlHZYPjbFeu+trw/pGHMgCxEerWPMQeVAnXGdEq2jAXfqvU9G2rzCtFY33GoE7tI6WvmK13sHpuaQxSifCRycnjOaEozAFXUu0bIJx7TTJzA+dL3RFGwMeVDvPRK3x2/IxxP2GoHfjcBOvfdCaj72tWleYfa1aZzbmmcEtmsd7dhkA236Ea6FeW72dnLP0T3lnJ22xoSEuYo3Z4Sf32bHGuzx5chUFKVrhUVEXqzypjR4fdEikrlKYLTP7IlIbYCwS/iTiISIyLhJWB9mJCKHTQJtpoAqtO4PsHLTMBVoERGnD9hnf3NXXLmSsooQIBaILjqYn1OQl11lnFDb2Hyyobn9NfADGKkuL531AJaUVUQA23EXiaVFys4UHUtPTV4qTZ++DNVerXxwXx8M8A3oqS4vnQQILimriAVygSjcVzEJdznKann5Nio9NSU6KiLM2ts/OHrtTs0gsAWIARaBSSACSM7cf+BnV0vTlAWwsVwtDgEp+hCuV9W80j2Gqy1RndcP1KvzbUBTkLrSauXxI2oB3gB2dZVnwEY1rA3qa7CqvgXABYzjLld9LJe9BaDLmJR0IM6YeRM7HAHea0nxdmzigHVAJBCqRmEB5tWdTAMTvo7Nbwng09R+hsh2AAAAAElFTkSuQmCC", symbolOffset: [0, "-50%"], // 标记相对于原本位置的偏移 // label: { // normal: { // show: true, // offset: [18, -10], // 是否对文字进行偏移。默认不偏移。例如:[30, 40] 表示文字在横向上偏移 30,纵向上偏移 40。 // formatter: function (params) { // console.log("气泡:", params); // return "{fline|" + params.data.name + "}"; // }, // position: "insideTopLeft", // 标签相对于图形包围盒左上角的位置。 // distance: 0, // backgroundColor: "#16B47F", // padding: [0, 0], // borderRadius: 3, // // verticalAlign:'middle', // // lineHeight: 32, // color: "#ffffff", // rich: { // fline: { // padding: [4, 6, 4, 6], // color: "#ffffff", // }, // }, // }, // emphasis: { // show: false, // }, // }, itemStyle: { emphasis: { borderColor: "#fff", borderWidth: 1, }, }, }, ], }; mapInstance.value.setOption(option); mapInstance.value.on("click", function (params) { console.log("---params----", params); }); }; onMounted(() => { mapInstance.value = echarts.init(map.value); echarts.registerMap("world", world); drawMap(); }); #map { width: 100%; height: 600px; }