利用Leaflet.js创建交互式地图:绘制多个多边形和点位

2024-08-31 18:20

本文主要是介绍利用Leaflet.js创建交互式地图:绘制多个多边形和点位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言

        在地理信息系统(GIS)和地图可视化领域,Leaflet.js是一个轻量级但功能强大的JavaScript库,它提供了丰富的API来创建交互式地图。本文将通过一个实际的Vue组件示例,展示如何使用Leaflet.js在地图上绘制多边形和点位,并且实现多边形上文字的动态缩放效果。

功能概述

        1.地图初始化

                首先,我们需要在Vue组件中初始化地图,设置中心点、缩放级别,并添加地图瓦片。

        2.多边形绘制

                通过给定的坐标点数据,我们使用Leaflet.js的L.polygon方法在地图上绘制多边形区域。

        3.点位图标添加

                在地图上添加视频监控点位,使用自定义图标,并为每个点位添加点击事件。

        4.响应式文字显示

                根据地图的缩放级别,动态调整多边形上文字的显示和隐藏,提升用户体验。

实现步骤

        这里提供的代码块仅展示了部分关键功能,以帮助读者理解整个实现过程,完整的代码和项目资源可以在个人中心-资源库获取

        1. 地图初始化

                在Vue组件的mounted生命周期钩子中初始化地图,并添加地图瓦片

initMap() {this.map = L.map("mapRef", {center: [21.582007, 111.824558],zoom: 15,zoomControl: false,doubleClickZoom: false,attributionControl: false,});this.name = L.tileLayer("http://{s}.tile.osm.org/{z}/{x}/{y}.png", {maxZoom: 19,attribution: '© OpenStreetMap contributors',}).addTo(this.map);
}

        2. 绘制多边形

                使用setBethAlreadyArea方法,将多边形数据转换为Leaflet.js所需的格式,并在地图上绘制。

setBethAlreadyArea(arr) {arr.map((item) => {let options = item.berthCoordinate.split(";").map((p) => p.split(",").map(Number));let marker = L.polygon(options, {color: item.lineColor,weight: item.lineFineness,fillColor: item.berthColour,fillOpacity: 0.5,}).addTo(this.map);// ...省略文字添加和事件绑定代码});
}

        3. 添加点位图标

                使用setVideoIcon方法,为每个视频监控点位添加图标,并绑定点击事件。

setVideoIcon(arr) {let videoIcon = L.icon({iconUrl: require("@/assets/images/berth/videoIcon.png"),iconSize: [25, 25],iconAnchor: [0, 0],popupAnchor: [-3, -76],});arr.map((item) => {let video = L.marker(item.position, { icon: videoIcon }).addTo(this.map).on("click", (e) => this.videoSurveillance(item));});
}

        4. 响应式文字显示

        根据地图的缩放级别,动态调整多边形上文字的显示。

handleZoomChange(e) {const zoomLevel = e.target._zoom;const minZoomToShowText = 15;this.map.eachLayer((layer) => {if (layer instanceof L.Marker && layer.options.icon.options.className === "my-div-icon") {layer.setOpacity(zoomLevel < minZoomToShowText ? 0 : 1);}});
}

        5. 自动调整地图大小

        使用MutationObserver监听DOM变化,自动调整地图大小以适应不同屏幕尺寸。

autoSize() {new MutationObserver(() => this.map.invalidateSize()).observe(this.$refs.mapRef, {attributes: true,attributeFilter: ["style"],});
}

结语

        通过上述步骤,我们成功实现了一个基于Vue.js和Leaflet.js的交互式地图组件,它不仅能够绘制多边形和点位,还能够根据用户的缩放操作动态调整文字的显示。这种类型的组件在渔业监控、城市管理、环境监测等领域有着广泛的应用前景。

这篇关于利用Leaflet.js创建交互式地图:绘制多个多边形和点位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124647

相关文章

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔