openlayers实现绘制图标,并实现图标的聚合功能

news2024/11/29 8:39:52

点聚合说明

  • 点聚合功能是指将地图上密集的点数据聚合成一个更大的点或者其他形状,以改善地图的可视化效果和性能。点聚合功能通常用于在地图上显示大量的点标记,例如地图上的POI(兴趣点)、传感器数据等。
  • 通过点聚合功能,可以将附近的点聚合成一个单独的点或其他形状,以减少地图上点数据过多时的视觉混乱,并提高地图的加载和交互性能。当用户放大地图时,聚合的点会逐渐展开显示更详细的信息,从而帮助用户更好地理解地图上的数据分布情况。
  • 在OpenLayers中,点聚合功能可以通过使用OpenLayers的相关功能和插件来实现。通常会根据地图上点的位置和密度来动态生成聚合点,并在用户交互时进行相应的展开和收缩操作,以提供更好的用户体验。
  • 点聚合功能在OpenLayers中是一种处理大量点数据的有效方式,可以改善地图的可读性和性能,同时提供更好的用户交互体验。

思路实现

  • 引入openlayers类
  • 在地图上打点或绘制图标
  • 对生成的点进行聚合功能,根据数量进行样式定义

完成效果

在这里插入图片描述
在这里插入图片描述

实现

封装olCluster.ts

import 'ol/ol.css'
import {Fill, Style, Icon, Stroke,Text, Circle as CircleStyle} from "ol/style";
import Feature from 'ol/Feature';
import Point from 'ol/geom/Point';
import {Vector as VectorLayer} from 'ol/layer';
import {Vector as VectorSource, Cluster} from 'ol/source';
import {fromLonLat} from 'ol/proj';


const olCluster = (options: any) => {
    const features = []
    for (let i = 0; i <5000; ++i) {
        const lon = Number(112);
        const lat = Number(22);
        const point = fromLonLat([lon+ Math.random() * 0.6, lat + Math.random() * 0.6]);
        let feature = new Feature({
            geometry: new Point(point),
        });
        feature.setProperties({
            id_Index: i, 
            type: options.type,
            name: 'olCluster',
            id: i,
        });
        features.push(feature)
    }

    const source = new VectorSource({
        features: features,
    });

    const clusterSource = new Cluster({
        distance: parseInt('40', 10),
        minDistance: parseInt('20', 10),
        source: source,
    });

    const layer:any = new VectorLayer({
        id: options.type, 
        source: clusterSource,
        style: clusterStyle,
        zIndex: 99
    });


    window.map.addLayer(layer);
    function clusterStyle(feature:any) {
        const size = feature.get('features').length;
        let style;
        if (!style) {
            if(size < 10){
                style = new Style({
                    image: new Icon({
                            anchor: [0.5, 1],
                            scale: 0.5,
                            src: '/img/樱桃水果.png'
                    })
                });
            }else{
                style = new Style({
                    image: new Icon({
                            anchor: [0.5, 1],
                            scale: 0.7,
                            src: options.billboardImg2
                    }),
                    text: new Text({
                        text: size.toString(),
                        fill: new Fill({
                            color: '#fff',
                        }),
                        textBaseline: 'middle', 
                        textAlign: 'center',
                        offsetY: -48
                    }),
                });
            }
        }
        return style;
    }
};


export default olCluster;

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

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

相关文章

【机器学习300问】86、简述超参数优化的步骤?如何寻找最优的超参数组合?

本文想讲述清楚怎么样才能选出最优的超参数组合。关于什么是超参数&#xff1f;什么是超参数组合&#xff1f;本文不赘述&#xff0c;在之前我写的文章中有详细介绍哦&#xff01; 【机器学习300问】22、什么是超参数优化&#xff1f;常见超参数优化方法有哪些&#xff1f;htt…

[Bug]:由于中国防火墙,无法连接 huggingface.co

问题描述 : OSError: We couldnt connect to https://huggingface.co to load this file, couldnt find it in the cached files and it looks like youscan/ukr-roberta-base is not the path to a directory containing a file named config. Json. Checkout your internet …

支持视频切片的开源物联网平台

软件介绍 MzMedia开源视频联动物联网平台是一个简单易用的系统,该平台支持主流短视频平台&#xff08;如抖音、快手、视频号&#xff09;的推流直播功能&#xff0c;同时提供视频切片等功能。系统后端采用Spring Boot&#xff0c;前端采用Vue3和Element Plus&#xff0c;消息服…

[C++初阶]string的几道oj题

1.LCR 192. 把字符串转换成整数 (atoi) 这题难度不大,我这里采取遍历跳过空格的方式&#xff0c;我先展示出我的代码,然后慢慢讲解: class Solution { public:int myAtoi(string str) {if (str.empty()) return 0;int lengthstr.size();int i0;int symbol1;int sum0;while(i&l…

C++组合类

类的数据成员不但可以是基本类型&#xff0c;也可以是其它类的对象。 组合类就是指一个类包含其他类的对象作为该类的数据成员。 当组合类创建对象时&#xff0c;其中包含的各个数据成员对象应首先被创建。因此&#xff0c;在创建类的对象时&#xff0c;既要对本类的基本…

2024小红书电商实战营,养号打造IP/选爆品/开店铺/爆款笔记/等等(24节)

我们非常荣幸地为大家带来2024小红书电商实战营的第一期&#xff0c;在这里我们将带领大家一起深入学习如何利用小红书平台&#xff0c;实现个人品牌的发展和商业利益的增长。 首先&#xff0c;我们将讨论养号的重要性以及如何打造个人品牌。无论是建立自己的受众群体还是提高…

java基础知识点总结2024版(8万字超详细整理)

java基础知识点总结2024版&#xff08;超详细整理&#xff09; 这里写目录标题 java基础知识点总结2024版&#xff08;超详细整理&#xff09;java语言的特点1.简单性2.面向对象3.分布式4.健壮性5.安全性6.体系结构中立7.可移植性8.解释性9.多线程10.动态性 初识java中的main方…

刨析YOLOv8的改进模块

1、YOLOv5回顾 这里粗略回顾一下,这里直接提供YOLOv5的整理的结构图吧:Backbone:CSPDarkNet结构,主要结构思想的体现在C3模块,这里也是梯度分流的主要思想所在的地方;PAN-FPN:双流的FPN,必须香,也必须快,但是量化还是有些需要图优化才可以达到最优的性能,比如cat前后…

【机器学习300问】87、学习率这种超参数在优化时选择随机搜索方法,为什么要在对数尺度范围进行随机搜索?

在超参数优化过程中&#xff0c;对数尺度范围进行随机采样对于某些类型的超参数来说是非常有效的&#xff0c;特别是当超参数的有效值跨越几个数量级时。学习率就是这样一种超参数&#xff0c;它可以从非常小&#xff08;例如&#xff09;到相对大的值&#xff08;例如&#xf…

Java RMI SERVER命令执行漏洞

Java RMI SERVER命令执行漏洞 一、介绍二、原理三、复现准备四、漏洞复现 一、介绍 RMI全称是Remote Method Invocation&#xff08;远程方法调用&#xff09;&#xff0c;是专为Java环境设计的远程方法调用机制&#xff0c;远程服务器提供API&#xff0c;客户端根据API提供相…

57. 【Android教程】相机:Camera

相机现在已经不仅仅是手机必备神器了&#xff0c;甚至相机的拍照质量已经是很多人买手机的首选条件了。而对于相机而言主要有两大功能&#xff1a;拍照片和拍视频。Android 为此两种方式&#xff1a; 相机 intent相机 API 本节我们就一起来看看相机的具体用法。 1. 打开 Camer…

STC8增强型单片机开发day03

中断系统INT 中断的概念 中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。 当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求&#xff0c;要求 CPU 暂停当前的工作,转而去处理这个紧急事件&#xff0c;处理完以后&#xff0c;再回到原来被中断的…

鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式

运行机制 共享好端端的一词&#xff0c;近些年被玩坏了&#xff0c;共享单车,共享充电宝,共享办公室&#xff0c;共享雨伞… 甚至还有共享女朋友&#xff0c;真是人有多大胆&#xff0c;共享有多大产。但凡事太尽就容易恶心到人&#xff0c;自己也一度被 共享内存 恶心到了&am…

南京信工一班IP(2)

第六章&#xff0c;BGP—边界网关协议 自治系统—AS ​ 定义&#xff1a;由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合。 ​ AS的来源&#xff1a; 整个网络规模过大&#xff0c;会导致路由信息收敛速度过慢&#xff0c;设备对相同目标认知不同。AS之间…

python算法demo0512

最长回文数 代码 class Solution:def longestPalindrome(self, s: str) -> str:n len(s)if n < 2:return smax_len 1begin 0# dp[i][j] 表示 s[i..j] 是否是回文串dp [[False] * n for _ in range(n)]for i in range(n):dp[i][i] True# 递推开始# 先枚举子串长度fo…

iview(viewUI) span-method 表格实现将指定列的值相同的行合并单元格

效果图是上面这样的&#xff0c;将第一列的名字一样的合并在一起&#xff1b; <template><div class"table-wrap"><Table stripe :columns"columns" :data"data" :span-method"handleSpan"></Table></div&…

Oracle 数据库

前言 今天开始学习 Oracle 数据库&#xff0c;这是实习公司要求的&#xff0c;虽然还没开始实习&#xff0c;但是事先熟练到岗之后就不需要再花费时间学习了。有了 MySQL 的基础&#xff0c;学习 Oracle 应该问题不大&#xff0c;不过 MySQL 一些进阶的内容依然需要再精进一下。…

搭建属于自己的AI知识库

前言 最近在看一本书《在线》&#xff0c;将所有数据都需要在线&#xff0c;才有生命力&#xff0c;那么我们的知识库也是。我们现在就可以用先进的大预言模型搭建属于自己的在线 AI 知识库&#xff0c;他就是 ChatGLM 智谱清言智能体。 它可以将自己的知识库与 ChatGLM 结合&…

锐捷EWEB网管系统RCE漏洞

文章目录 免责声明漏洞描述漏洞原理影响版本漏洞复现修复建议 免责声明 该文章只为学习和交流&#xff0c;请不要做违法乱纪的事情&#xff0c;如有与本人无关 漏洞描述 锐捷网管系统是由北京锐捷数据时代科技有限公司开发的新一代基于云的网络管理软件&#xff0c;以"…

保研机试之【二叉树序列化】

老规矩咯&#xff1a; 参考&#xff1a;东哥带你刷二叉树&#xff08;序列化篇&#xff09; | labuladong 的算法笔记 建议先过一遍&#xff1a;今天是二叉树~-CSDN博客&#xff0c;very重要&#xff01; 然后再过一遍&#xff08;理解怎么应用方法&#xff09;&#xff1a…