vue+leaflet实现聚合图(根据半径划分)

news2024/11/20 20:24:50

效果 官方示例 github地址
在这里插入图片描述

1. 安装leaflet.markercluster插件

npm install leaflet.markercluster -S

**

2. 在项目中引入leaflet.markercluster和样式文件

**

import 'leaflet.markercluster/dist/MarkerCluster.css'
import 'leaflet.markercluster/dist/MarkerCluster.Default.css'
import 'leaflet.markercluster'

3. 在data中注册图层组

export default {
	name: 'Map',
	data () {
		return {
			LayerMarkGroup: this.$L.markerClusterGroup({
				// 当在最大缩放级别点击一个聚合点时,会将其蜘蛛化,以便看到包含的所有标记
                spiderfyOnMaxZoom: true,
                // 当鼠标经过聚合点时,显示包含的标记围成的范围
                showCoverageOnHover: false,
                // 点击一个聚合点时,快捷缩放到一个对应范围适合显示的zoom级别
                // zoomToBoundsOnClick: false,
                chunkedLoading: true,
                // 一个聚合点的最大影响半径(px),默认为80
                maxClusterRadius: 210,
                // 平滑的拆分/合并聚合点的子项
                animate: true,
                // 定义一个函数去创建聚合点的图标
                iconCreateFunction: (cluster) => {
                    let curMarkers = cluster.getAllChildMarkers();
                    let n = 0;
                    curMarkers.forEach((item, index) => {
                        n += 1;
                    });
                    let className = 'yccluster';
                    const img = require('@/assets/images/home/yc.png');
                    // 图标创建方式1
                    return L.divIcon({html: `<span>液厂</span><div style="background-color: rgba(141, 93, 203, 1); margin: 0; border-radius: 5px;"><span>${n}</span><div">`, className: className, iconSize: this.$L.point(70, 30)});
                    // 图标创建方式2
                    // return this.$L.icon({
                    //     iconUrl: require('@/assets/images/home/gyyh.png'),
                    //     iconSize: [25, 25],
                    //     opacity: 1
                    //     // iconAnchor: [4, 29],
                    // });
                }
            })
		}
	}
}

4. 图层组添加聚合点数据,挂载到地图上

data.forEach(item => {
	this.LayerMarkGroup.addLayer(this.getMarker(item))
})
this.LayerMarkGroup.addTo(this.map)

getMarker() {
	const marker = this.$L.marker(item.latlng, {
		icon: this.$L.icon({
			iconUrl: zoom < 9 ? iconImg : markerImg,
			iconSize: [10, 10],
			opacity: 1,
			iconAnchor: [5, -5],
			popupAnchor: [5, 0]
		}),
		item: item
	})
	marker.on('mouseover', () => {
		// 鼠标移入事件
        marker.bindPopup(`<div class="cd-span">${item.name}</div>
         `, { className: 'mypopup' }).openPopup();
     });
     marker.on('mouseout', () => {
     	// 鼠标移出事件
         marker.closePopup();
     });
     marker.on('click', () => {
     	// 点击事件
        this.$router.push({ name: 'DownstreamDetail', params: {type: type, item: item} });
     });
     return marker;
}

5. 清空聚合点数据图层

this.LayerMarkGroup.clearLayers();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/699149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SqlServer定时执行存储过程

1.连接数据库后选择【SQL Server 代理】—【作业】——右键【新建作业】&#xff0c;具体操作如下图&#xff1a; 2.【新建作业】步骤如下图所示&#xff1a; 3.新建【步骤】&#xff0c;具体如下图所示&#xff1a; 4.新建【计划】&#xff0c;具体如下图所示&#xff1a; 6.配…

Ubuntu 20.04 下g++用不了,但是提示已经安装

问题描述 用sudo apt-get install g来安装&#xff0c;系统却又说g已经是最新版本了&#xff0c;但是用g -v查看又提示需要安装 g&#xff0c;如图片所示。 解决方法 未安装g&#xff0c;安装依赖只需运行命令行&#xff1a; sudo apt-get install build-essential仍然无法成…

docker部署redis

一、拉取镜像 docker search redis 我部署的是redis6.0&#xff0c;使用docker pull 拉取镜像 docker pull redis:6.0 拉取成功后使用docker image查看镜像 docker images | grep redis 二、创建挂载目录 在 /opt 目录下创建redis的 conf 和 data 目录 sudo mkdir /opt/re…

YOLOv5 环境安装

Windows11下yolov5环境配置系列教程&#xff08;基础部分&#xff09; Windows11下yolov5环境配置系列教程&#xff08;基础部分&#xff09;_wnowswolf的博客-CSDN博客 安装 Anaconda3 可以改为miniconda 占用更小 将安装目录下的Scripts和condabin文件夹的路径加入环境变…

linux重启网卡失败

[TO简单粗暴啊&#xff1a; RTNETLINK answers: File exists 这个报错&#xff0c;我看了一下网卡目录下出现了两个网卡配置文件&#xff0c;一个ens33&#xff0c;一个eth0。我本机是ens33&#xff0c;所以把eth0的删除了&#xff0c;就可以了。我这个是测试机器&#xff0c;…

人脸识别是什么?及人脸识别的流程

目录 1. 人脸识别是什么及应用场景2. 人脸识别的组成2.1 前端图像采集2.2 后端智能平台 3.人脸技术的流程3.1人脸检测3.2人脸对齐3.2.1仿射变换3.2.2对齐方法 3.3人脸编码&#xff08;提取特征向量&#xff09;3.4人脸分类 1. 人脸识别是什么及应用场景 人脸识别特指利用分析比…

什么是 frp内网穿透?快解析内网穿透如何实现远程办公?

1.什么是frp内网穿透 frp是一个开源、简洁易用、高性能的内网穿透和 反向代理软件&#xff0c;支持 tcp, udp, http, https等协议&#xff0c;虽然它体积轻量但功能很强大。它利用处于内网或防火墙后的机器&#xff0c;对外网环境提供 http 或 https 服务&#xff1b;对于 htt…

python项目在linux中的启动脚本(shell脚本)

背景&#xff1a; 在linux环境&#xff0c;使用shell脚本&#xff0c;实现对某个服务的启动、停止功能。 shell脚本的功能&#xff1a; 启动&#xff08;start&#xff09;&#xff1a;通过参数 start &#xff0c;实现启动服务。如果该服务已经启动&#xff0c;给出已经启动…

2023年江西省研究生数模竞赛国际“合作-冲突”的演化规律研究

2023年江西省研究生数模竞赛 国际“合作-冲突”的演化规律研究 原题再现 国家之间的“合作-冲突”行为具有复杂性和多变性&#xff0c;对其决策模式的研究有着重要的意义。例如&#xff0c;对国际冲突和危机的准确预测可以帮助决策者采取有效的措施来防止或缓解冲突&#xff…

都是全志T113处理器,“-i”和“-S3”有什么区别?

自9个月前&#xff0c;创龙科技“1片含税就79元”的全志T113-i双核ARM Cortex-A71.2GHz的工业核心板(SOM-TLT113)推出之后&#xff0c;不少嵌入式软硬件工程师、用户都咨询我们&#xff0c;究竟T113-i和T113-S3这两款处理器有什么区别&#xff1f;不同后缀型号的处理器&#xf…

嵌入式芯片启动过程全解析,彻底理解bootloader

当你按下电源开关的那一瞬间&#xff0c;第一行代码&#xff0c;是如何在芯片上运行起来的呢&#xff1f; 我们都知道嵌入式软件代码&#xff0c;是需要通过一定的方式&#xff0c;烧录在硬件芯片中才能运行&#xff0c;而我们所熟知的烧录方式&#xff0c;除了物理刻蚀以外&a…

数据分析知识图谱

在做数据分析时&#xff0c;经常会有这样的困扰&#xff1a;面对几种相似的方法&#xff0c;既不清楚它们各自的使用场景&#xff0c;也无法分清它们之间的差别&#xff0c;一念之差就可能选错方法。如果你也有这样的困扰&#xff0c;建议按照SPSSAU知识图谱目录顺序检索对应的…

【万字】一文教会你关于“生成对抗网络GAN”的所有知识

1 GAN基本概念 1.1 GAN介绍 GAN的英文全称是Generative Adversarial Network&#xff0c;中文名是生成对抗网络。它由两个部分组成&#xff0c;生成器和鉴别器&#xff08;又称判别器&#xff09;&#xff0c;生成网络&#xff08;Generator&#xff09;负责生成模拟数据&…

深度分析我国“智慧+”养老模式的发展情况

随着我国的老龄化人口结构的不断加深&#xff0c;传统旧的养老服务模式已经无法全面适应当前的养老市场的需求&#xff0c;因此需要寻求更加新型的、多元化的模式来解决老年人的不同层次的需求&#xff0c;“智慧”养老的服务模式从而成为了新养老产业发展的主要导向。 “智慧…

【1089. 复写零】

目录 一、题目解析二、算法原理三、代码实现 一、题目解析 二、算法原理 三、代码实现 class Solution { public:void duplicateZeros(vector<int>& arr){//找出最后一个数int dest-1,cur0;for(;;cur){if(arr[cur]){dest;}else{dest2;}if(dest>arr.size()-1){bre…

GPT-4:AI的新突破,重塑芯片设计领域

随着人工智能&#xff08;AI&#xff09;的快速发展&#xff0c;其在各个领域的应用也日益广泛。最近&#xff0c;纽约大学Tandon工程学院的研究人员利用OpenAI的GPT-4模型&#xff0c;成功设计出了一个芯片&#xff0c;这标志着AI在硬件设计领域的重大突破。 GPT-4通过简单的英…

华为战略方法论:BLM模型之差距分析(限制版)

目录 说明 差距类型 1、业绩差距 2、机会差距 3、对标差距 专栏列表 个人简介 说明 今天就来谈谈 BLM 模型中的第一把钥匙&#xff0c;也就是差距分析。 从本质上来看。 BLM 模型中的差距与你在日常生活中听到或用到的差距在意义都是一样的。 不同之处就在于问题的复…

数据迁移工具,用这8种!

前言 最近有些小伙伴问我&#xff0c;ETL数据迁移工具该用哪些。 ETL(是Extract-Transform-Load的缩写&#xff0c;即数据抽取、转换、装载的过程)&#xff0c;对于企业应用来说&#xff0c;我们经常会遇到各种数据的处理、转换、迁移的场景。 今天特地给大家汇总了一些目前…

chatgpt赋能python:Python遍历n中所有数字

Python 遍历 n 中所有数字 Python 是一种高级编程语言&#xff0c;它被广泛用于许多应用程序和领域&#xff0c;如机器学习、人工智能和数据可视化等。Python 在处理数字时非常方便&#xff0c;因为它支持大量的数字操作和运算。在这篇文章中&#xff0c;我们将讨论如何使用 P…

C++制作简易计算器

C简易计算器 C简易计算器栈栈(Stack)的特点栈的相关概念栈的常用操作为栈的常见分类实例计算器概念代码实现测试 效果展示 简易计算器实现的功能&#xff1a; 基本的加减乘除、表达式错误判断、除法运算分母不能为0、支持多项式表达计算&#xff0c;自己封装一个模板栈、封…