Echarts—根据地理坐标被标注的中国地图(标记可以自定义为图片)

news/2024/11/24 12:06:55/

中国地图

  • 实现效果图
  • 创建echartChina.vue组件
  • 使用echartChina.vue组件
  • 修改标记图标为图片

实现效果图

在这里插入图片描述

这是一个有阴影的,并且根据坐标点被标记的地图展示,下面我们就把实现的代码贴出来,老样子,还是开袋即食!

创建echartChina.vue组件

1.点击下载中国地图json文件

把中国地图的json数据下载下来,放到项目本地中的utils文件夹下;位置随意,想放哪里都可以,能找到就行!

2.先写一个echartChina.vue组件
为了方便复用,我们可以先写一个地图组件,因为要实现地图阴影的效果,所以组件中对地图渲染了两次进行重叠,第一次是初始化地图阴影,第二次初始化就是实现地图功能效果的;

组件全部代码如下,直接粘贴即可;

<template><div id="china_map"></div>
</template><script>
import * as echarts from 'echarts';
import china from '@/utils/china.json'
echarts.registerMap('china', china)export default {data() {return {};},methods: {//初始化中国地图initEchartMap() {let mapDiv = document.getElementById('china_map');let myChart = echarts.init(mapDiv);var optionsoptions =  {tooltip: {show:false,triggerOn: "mousemove",   //mousemove、clickpadding:8,backgroundColor:'rgba(0,0,0,0.6)',borderWidth:0,textStyle:{color:'#fff',fontSize:12},},geo: {map: "china",roam: false,// 一定要关闭拖拽zoom: 1.6,center: [102, 36], // 调整地图位置aspectScale: 0.80, //长宽比label: {normal: {show: false, //关闭省份名展示fontSize: "10",color: "rgba(0,0,0,0.7)"},emphasis: {show: false}},itemStyle: {normal: {areaColor: "#0d0059",borderColor: "#389dff",borderWidth: 1, //设置外层边框shadowBlur: 6,shadowOffsetY: 12,shadowOffsetX: -5,shadowColor: "#01012a"},emphasis: {areaColor: "#184cff",shadowOffsetX: 0,shadowOffsetY: 0,shadowBlur: 5,borderWidth: 0,shadowColor: "rgba(0, 0, 0, 0.5)"}}},series:[{type: "map",map: "china",roam: false,zoom: 1.6,center: [102, 36],data:[],// geoIndex: 1,aspectScale: 0.80, //长宽比showLegendSymbol: false, // 存在legend时显示label: {normal: {show: false},emphasis: {show: false,textStyle: {color: "#fff"}}},itemStyle: {normal: {areaColor: "#0d0059",borderColor: "#389dff",borderWidth: 0.5},emphasis: {areaColor: "#17008d",shadowOffsetX: 0,shadowOffsetY: 0,shadowBlur: 5,borderWidth: 0,shadowColor: "rgba(0, 0, 0, 0.5)"}}}]}myChart.setOption(options);//随着屏幕大小调节图表window.addEventListener("resize", () => {myChart.resize();});},initChina(echartData){let mapDiv = document.getElementById('china_map');let myChart = echarts.init(mapDiv);var dataValue = echartData;var data1 = dataValue.splice(0, 4);var option = {series: [{type: "map",map: "china",roam: false,zoom: 1.6,center: [102, 36],aspectScale: 0.80, //长宽比showLegendSymbol: false, // 存在legend时显示label: {normal: {show: false},emphasis: {show: false}},itemStyle: {normal: {areaColor: {type: 'linear',x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0, color: 'rgba(36,83,255,1)'}, {offset: 1, color: 'rgba(10,29,255,1)'}],global: false},borderColor: "#389dff",borderWidth: 0.5},emphasis: {areaColor: "#17008d",shadowOffsetX: 0,shadowOffsetY: 0,shadowBlur: 5,borderWidth: 0,shadowColor: "rgba(0, 0, 0, 0.5)"}}},{name: "",type: "scatter",coordinateSystem: "geo",data: dataValue,symbol: "circle",symbolSize: 10,hoverSymbolSize: 10,tooltip: {formatter(value) {return value.data.name + "<br/>" + "设备数:" + "22";},show: true},encode: {value: 2},label: {formatter: "{b}",position: "right",show: false},itemStyle: {color: "#e0eb40"},emphasis: {label: {show: false}}},//下面是前五产生涟漪动画{name: "Top 5",type: "effectScatter",coordinateSystem: "geo",data: data1,symbolSize: 15,tooltip: {formatter(value) {return value.data.name + "<br/>" + "设备数:" + "22";},show: true},encode: {value: 2},showEffectOn: "render",rippleEffect: {brushType: "stroke",color: "#e0eb40",period: 9,scale: 5},hoverAnimation: true,label: {formatter: "{b}",position: "right",show: true},itemStyle: {color: "#e0eb40",shadowBlur: 2,shadowColor: "#333"},zlevel: 1}]};myChart.setOption(option);//随着屏幕大小调节图表window.addEventListener("resize", () => {myChart.resize();});}}};
</script><style scoped>#china_map{height: 100%;}
</style>

使用echartChina.vue组件

在需要使用地图的组件,直接引入即可,然后把需要展示的坐标地点传给地图组件,全部代码如下:

<template><div class="echartChina"><EchartChina ref="myEchart4"/></div>
</template>
<script>
import EchartChina from '@/components/bigEcharts/echartChina'
export default {data(){return {geoCoordMap:{哈尔滨: [126.63, 45.75],北京: [116.46, 39.92],广州: [113.23, 23.16],上海: [121.48, 31.22],郑州: [113.65, 34.76],厦门: [118.1, 24.46],杭州: [120.19, 30.26],攀枝花: [101.718637, 26.582347],东莞: [113.75, 23.04],广州: [113.23, 23.16],太原: [112.53, 37.87],拉萨: [91.11, 29.97],昆明: [102.73, 25.04],深圳: [114.07, 22.62],宿迁: [118.3, 33.96],佛山: [113.11, 23.05],海口: [110.35, 20.02],江门: [113.06, 22.61],大连: [121.62, 38.92],沈阳: [123.38, 41.8],长春: [125.35, 43.88],吉林: [126.57, 43.87],宜宾: [104.56, 29.77],呼和浩特: [111.65, 40.82],成都: [104.06, 30.67],桂林: [110.28, 25.29],齐齐哈尔: [123.97, 47.33],张家界: [110.479191, 29.117096],宜兴: [119.82, 31.36],西安: [108.95, 34.27],遵义: [106.9, 27.7],鄂尔多斯: [109.781327, 39.608266],潍坊: [119.1, 36.62],徐州: [117.2, 34.26],衡水: [115.72, 37.72],乌鲁木齐: [87.68, 43.77],开封: [114.35, 34.79],济南: [117, 36.65],南充: [106.110698, 30.837793],天津: [117.2, 39.13],聊城: [115.97, 36.45],芜湖: [118.38, 31.33],唐山: [118.02, 39.63],丽水: [119.92, 28.45],洛阳: [112.44, 34.7],秦皇岛: [119.57, 39.95],株洲: [113.16, 27.83],石家庄: [114.48, 38.03],长沙: [113, 28.21],衢州: [118.88, 28.97],合肥: [117.27, 31.86],武汉: [114.31, 30.52],大庆: [125.03, 46.58]}}},components:{EchartChina,},mounted(){const {geoCoordMap} = thisthis.initChinaMap(geoCoordMap)},methods:{dealWithData(geoCoordMap) {var mapData = geoCoordMapvar data = [];for (var key in mapData) {data.push({ name: key, value: mapData[key] });}return data;},initChinaMap(geoCoordMap){var chinaData = this.dealWithData(geoCoordMap)this.$nextTick(() => {this.$refs.myEchart4.initEchartMap()this.$refs.myEchart4.initChina(chinaData)})}}
}
</script>
<style lang='less' scoped>
.echartChina{height:100%;width: 100%;position: relative;
}
</style>

修改标记图标为图片

在这里插入图片描述

...
//引入图片
import gaoji from '@/assets/images/gaoji.png'
import chache from '@/assets/images/chache.png'
...{name: "",type: "scatter",coordinateSystem: "geo",data: dataValue,symbol: function(value,param){if(param.data.type == 0){return "image://" + chache;}else{return "image://" + gaoji;}},symbolSize: 20,hoverSymbolSize: 20,},

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

相关文章

目标检测数据集---玻璃瓶盖工业缺陷数据集

✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的数据集会在该…

Java与SpringBoot对redis的使用方式

目录 1.Java连接redis 1.1 使用Jedis1.2 使用连接池连接redis1.3 java连接redis集群模式 2.SpringBoot整合redis 2.1 StringRedisTemplate2.2 RedisTemplate 1.Java连接redis redis支持哪些语言可以操作 &#xff08;去redis官网查询&#xff09; 1.1 使用Jedis (1)添加jedis…

Vue中如何进行图片处理与滤镜效果?

Vue中如何进行图片处理与滤镜效果&#xff1f; 在 Vue 应用程序中&#xff0c;处理图片和应用滤镜效果是非常常见的需求。这可以让你的应用程序更加生动而丰富&#xff0c;吸引更多用户的眼球。Vue 提供了多种方式来处理图片和应用滤镜效果&#xff0c;让你可以轻松地实现这些…

医院监控4大难点如何破解?这个方法太顶了

在医院环境中&#xff0c;许多重要的设备对于病人的诊断、治疗和监护至关重要。为了确保这些设备的正常运行和安全性&#xff0c;动环监控系统可以发挥关键作用。 客户案例 四川某大型综合医院引入了动环监控系统来监控其重要设备&#xff0c;如手术室设备、监护设备和医疗影像…

qq手机浏览器不支持HTML5,手机QQ浏览器:响应HTML5未来 着眼当下

【中关村在线软件资讯】10月20日消息&#xff1a;由CSDN和创新工场联合举办的“移动开发者大会中国 2012”今天在北京国家会议中心继续进行&#xff0c;在上午的HTML5与Web App主题论坛上&#xff0c;腾讯MIG移动互联网事业群浏览器产品部研发组总监阮曙东作了名为“手机QQ浏览…

网络诊断,浏览器不能上网,其他软件都能上网

最近遇到一个特殊的例子&#xff0c;一个同学的电脑出了点奇怪的问题&#xff0c;暂且将这位童鞋叫作小A吧。 故障描述&#xff1a;电脑无法通过浏览器上网&#xff0c;无论是360浏览器还是谷歌浏览器&#xff0c;都无法打开页面&#xff0c;有时显示的是连接错误&#xff0c;…

新Edge浏览器对比评测,微软找回面子全靠它了

(给技术最前线加星标&#xff0c;每天看技术热点) 转自&#xff1a;中关村在线 根据外媒消息&#xff0c;Chromium芯的Edge浏览器可能会随Windows 10 20H1更新直接登陆Windows 10系统&#xff0c;并取代老款Edge浏览器。 自Windows 10系统发布以来&#xff0c;其市场占有率不断…

html页面在ie上不兼容,四招解决IE 11浏览器网页不兼容问题

虽然Windows 10即将发布,而Edge浏览器也将成为该系统的默认浏览器,但截止目前,IE 11的用户数量已经超越IE 10和IE 9的总和。虽然IE 11已经大大改进了性能,但是在浏览一些网站的时候还是会出现一些兼容性的问题。如果想要更为流畅的运行IE11浏览器的话,就要使用下面提供的方…