当前位置: 首页 > news >正文

vue-实现高德地图-省级行政区地块显示+悬浮显示+标签显示

在这里插入图片描述

<template><div><div id="container" /><div @click="showFn">显示</div><div @click="removeFn">移除</div></div>
</template><script>
import AMapLoader from '@amap/amap-jsapi-loader'
import chinaData from './provincialData/中华人民共和国.json'
export default {data() {return {map: null,infoWindow: null,markers: [],provincPolygonList: []}},async mounted() {await this.initMap()// 初始完地图后,开始绘制await this.setUpPlotsFn(chinaData)},methods: {/** 1. 初始化地图 **/initMap() {return new Promise((resolve) => {window._AMapSecurityConfig = {securityJsCode: '你的安全密钥' // 自2021年12月02日升级后, key与安全密钥必须一起使用, 否则可能会出现一些API无法使用,如 DistrictSearch}AMapLoader.load({key: '697eb023cbaadfdf68211c7b18165ed7', // 首次调用 load 时必填version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15plugins: ['AMap.DistrictSearch', // 配置行政区查询服务'AMap.GeoJSON' // 配置行政区查询服务] // 需要使用的的插件列表,如比例尺'AMap.Scale'等}).then((AMap) => {this.map = new AMap.Map('container', {center: [116.30946, 39.937629],zoom: 3})this.map.on('complete', () => {resolve()})}).catch((e) => {console.log(e)})})},// 设置地块setUpPlotsFn(featuresObj) {const { features } = featuresObjfeatures.forEach((item) => {this.addGeoJsonFn(item)})this.map.add(this.provincPolygonList)this.map.add(this.markers)// 地图自适应this.map.setFitView()},// GeoJson数据进行解析addGeoJsonFn(feature) {const geoJSON = {type: 'FeatureCollection',features: [feature]}this.map.plugin('AMap.Geocoder', () => {const polygon = new window.AMap.GeoJSON({geoJSON: geoJSON,getPolygon: function(geojson, lnglats) {// 将解析出来的面 进行绘制return new window.AMap.Polygon({path: lnglats,fillOpacity: 0.4,fillColor: '#80d8ff',strokeColor: '#08B2BD',strokeWeight: 1,map: this.map})}})const { name, centroid } = feature.propertiesconsole.log('🚀 ~ file: MapConnentNewLast.vue:89 ~ this.map.plugin ~  feature.properties:', feature.properties)polygon.on('mouseover', (e) => {// 鼠标移入更改样式polygon.setOptions({fillOpacity: 0.7,fillColor: '#08B2BD'})const info = []info.push(`<div style="font-size: 12px; background-color: #fff;padding: 10px; border-radius: 10px;"><div style="font-weight: 700;">${name}</div>`)info.push('<div style="display: flex; justify-content: space-between;align-items: center;padding: 4px 0;"><span style="color:#666;padding-right: 10px;">聚合资源总量</span> <span style="font-weight: 700;">100MW</span></div>')info.push('<div style="display: flex; justify-content: space-between;align-items: center;padding: 4px 0;"><span style="color:#666;">充电站</span> <span style="font-weight: 700;">100座</span></div>')info.push('<div style="display: flex;justify-content: space-between;align-items: center;padding: 4px 0;"><span style="color:#666;">换电站</span> <span style="font-weight: 700;">100座</span></div>')info.push('<div style="display: flex;justify-content: space-between;align-items: center;padding: 4px 0;"><span style="color:#666;">光伏</span> <span style="font-weight: 700;">100MW</span></div>')info.push('<div style="display: flex; justify-content: space-between;align-items: center;padding: 4px 0;"><span style="color:#666;">储能</span> <span style="font-weight: 700;">100MWH</span></div></div>')this.infoWindow = new window.AMap.InfoWindow({isCustom: true, // 使用自定义窗体content: info.join(''),offset: new window.AMap.Pixel(0, -30)})// 获取点击的位置信息const lnglat = e.lnglat// 在点击的位置上显示信息窗体this.infoWindow.open(this.map, lnglat)})polygon.on('mouseout', () => {// 鼠标移出恢复样式this.infoWindow.close()polygon.setOptions({fillOpacity: 0.5,fillColor: '#80d8ff'})})this.provincPolygonList.push(polygon)const center = this.$turf.centroid(geoJSON).geometry.coordinatesconsole.log('🚀 ~ file: MapConnentNewLast.vue:138 ~ this.map.plugin ~ center:', center)if (name) {this.addMarkerList(centroid || center, name)}})},addMarkerList(center, item) {const markersContent = []markersContent.push(`<div style="display: flex;align-items: center;font-size: 10px;border-radius: 4px;">`)markersContent.push(`<span style="color:#666;background-color: #fff;min-width: 40px;height: 20px;display: flex;align-items: center;justify-content:center">${item}</span>`)markersContent.push(`<span style="color:#fff;background-color: #3AD6C4;min-width: 40px;height: 20px;display: flex;align-items: center;justify-content:center">3213</span>`)markersContent.push(`</div>`)const marker = new window.AMap.Marker({position: center, // 标注点位置content: markersContent.join(''),map: this.map // 将标注点添加到地图上})this.markers.push(marker)},// 隐藏removeFn() {if (this.markers) {this.markers.forEach((item) => item.hide())this.provincPolygonList.forEach((item) => item.hide(item))}},// 隐藏showFn() {if (this.markers) {this.markers.forEach((item) => item.show())this.provincPolygonList.forEach((item) => item.show(item))}}}
}
</script><style scoped lang="scss">
#container {width: 100%;height: 53vh;
}.infoWindow {display: flex;flex-direction: column;font-size: 10px;.title {color: #000;}.info_item {display: flex;justify-content: space-between;align-items: center;&:first-child {span {color: #444;}}}
}.amap-info-content {border-radius: 10px;
}</style>

相关文章:

vue-实现高德地图-省级行政区地块显示+悬浮显示+标签显示

<template><div><div id"container" /><div click"showFn">显示</div><div click"removeFn">移除</div></div> </template><script> import AMapLoader from amap/amap-jsapi-load…...

flutter ‘Gradle Libs‘ was added by build file ‘app/build.gradle‘

相关问题解释文章 How to prefer settings.gradle repositories over build.gradle repositoriesMode 解释 问题描述 此问题是&#xff0c;直接创建的flutter项目&#xff0c;需要配置其他的maven仓库地址&#xff0c;和第三方module&#xff0c;结果始终都是无法成功 错误…...

Java中的链式编程风格与应用案例

引言 链式编程是一种在编程中经常使用的风格&#xff0c;它可以使代码更加简洁、易读和易于维护。在Java中&#xff0c;链式编程可以通过方法链的方式来实现。本文将介绍Java中的链式编程风格&#xff0c;并通过几个应用案例来说明其实际应用。 一、链式编程的概念与特点 链式…...

MTK Android P Sensor架构(一)

需求场景&#xff1a; 本来如果只是给传感器写个驱动并提供能读取温湿度数据的节点&#xff0c;是一件比较轻松的事情&#xff0c;但是最近上层应用的同事要求我们按照安卓标准的流程来&#xff0c;这样他们就能通过注册一个服务直接读取传感器事件数据了。这样做的好处就是第…...

低代码开发与传统软件开发:未来趋势与竞争格局

近年来&#xff0c;低代码开发平台的快速发展引起了各行各业的广泛关注。低代码开发平台简化了软件开发的复杂性&#xff0c;提供了更快速、更灵活的开发方式。于是&#xff0c;许多人开始产生一个疑问&#xff1a;未来低代码开发是否会取代传统软件开发&#xff1f;今天这篇文…...

leetcode 股票问题全序列

1 只允许一次交易&#xff0c;121题&#xff0c;买卖股票的最佳时机 class Solution {/*给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票…...

SpringBoot中日志的使用log4j2

SpringBoot中日志的使用log4j2 1、log4j2介绍 Apache Log4j2 是对 Log4j 的升级&#xff0c;它比其前身 Log4j 1.x 提供了重大改进&#xff0c;并提供了 Logback 中可用的许多改 进&#xff0c;同时修复了 Logback 架构中的一些问题&#xff0c;主要有&#xff1a; 异常处理…...

机械设备企业网站建设的效果如何

机械设备涵盖的类目比较广&#xff0c;其市场需求也是稳增不减&#xff0c;也因此无论大小企业都有增长的机会&#xff0c;当然这也需要靠谱的工具及正确的决策。 对机械设备企业来说&#xff0c;产品品质自然是首位&#xff0c;而向外打造品牌、扩展信息及拓客转化自然也是非…...

设计模式之结构型设计模式(二):工厂模式 抽象工厂模式 建造者模式

工厂模式 Factory 1、什么是工厂模式 工厂模式旨在提供一种统一的接口来创建对象&#xff0c;而将具体的对象实例化的过程延迟到子类或者具体实现中。有助于降低客户端代码与被创建对象之间的耦合度&#xff0c;提高代码的灵活性和可维护性。 定义了一个创建对象的接口&…...

算法模板之单链表图文讲解

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;算法模板、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️使用数组模拟单链表讲解1.1 &#x1f514;为什么我们要使用数组去模拟单链表…...

【强化学习-读书笔记】表格型问题的 Model-Free 方法

参考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. Barto无模型方法 在前面的文章中&#xff0c;我们介绍的是有模型方法&#xff08;Model-Based&#xff09;。在强化学习中&#xff0c;"Model"可以理解为算法…...

【手撕算法系列】k-means

k-means k-means算法介绍 k-means算法介绍 K-means算法是一种用于聚类的迭代算法&#xff0c;它将数据集划分为K个簇&#xff0c;其中每个数据点属于与其最近的簇的中心。这个算法的目标是最小化簇内的平方和误差&#xff08;簇内数据点与簇中心的距离的平方和&#xff09;。 …...

D33|动态规划!启程!

1.动态规划五部曲&#xff1a; 1&#xff09;确定dp数组&#xff08;dp table&#xff09;以及下标的含义 2&#xff09;确定递推公式 3&#xff09;dp数组如何初始化 4&#xff09;确定遍历顺序 5&#xff09;举例推导dp数组 2.动态规划应该如何debug 找问题的最好方式就是把…...

C语言----文件操作(二)

在上一篇文章中我们简单介绍了在C语言中文件是什么以及文件的打开和关闭操作&#xff0c;在实际工作中&#xff0c;我们不仅仅是要打开和关闭文件&#xff0c;二是需要对文件进行增删改写。本文将详细介绍如果对文件进行安全读写。 一&#xff0c;以字符形式读写文件&#xff…...

oracle 10046事件跟踪

10046事件是一个很好的排查sql语句执行缓慢的内部事件&#xff0c;具体设置方式如下&#xff1a; 根据10046事件跟踪SQL语句 1、 alter session set events 10046 trace name context forever,level 12; 2、执行SQL语句 3、关闭10046事件 alter session set events 10046 trace…...

微软自带浏览器Edge,无法关闭“保存历史记录网站的屏幕截图”解决方案

微软自带浏览器Edge&#xff0c;无法关闭“保存历史记录网站的屏幕截图”解决方案 吐槽1&#xff1a;Windows自带的Chrome内核版本的浏览器Microsofg Edge刚发布时可谓一股清流&#xff0c;启动速度快&#xff0c;占用内存较小&#xff0c;相信很多人也开始抛弃正代Chrome&…...

讲座 | 颠覆传统摄像方式乃至计算机视觉的“脉冲视觉”

传统相机拍摄视频时其实是以一定帧率进行采样&#xff0c;视频其实还是一串图片的集合&#xff0c;因此低帧率时会觉得视频卡&#xff0c;拍摄高速运动物体时会有运动模糊等等问题。然而你能想象这一切都可以被“脉冲视觉”这一前沿技术改变吗&#xff1f; 今天下午听了北京大学…...

uniGUI学习之UniHTMLMemo1富文本编辑器

1]系统自带的富文本编辑器 2]jQueryBootstarp富文本编辑器插件summernote.js 1]系统自带的富文本编辑器 1、末尾增加<p> 2、增加字体 3、解决滚屏问题 4、输入长度限制问题 5、显示 并 编辑 HTML源代码(主要是图片处理) 1、末尾增加<p> UniHTMLMemo1.Lines…...

详细教程 - 从零开发 鸿蒙harmonyOS应用 第四节 (鸿蒙Stage模型 登录页面 ArkTS版 推荐使用)

在鸿蒙OS中&#xff0c;Ability是应用程序提供的抽象功能&#xff0c;可以理解为一种功能。在应用程序中&#xff0c;一个页面即一种能力&#xff0c;如登录页面&#xff0c;即具有登录功能的能力。以下是对鸿蒙新建项目的登录代码功能的详细解读和工作流程的描述&#xff1a; …...

uniapp怎么实现授权登录

在Uniapp中实现授权登录通常涉及以下几个步骤&#xff1a; 创建登录按钮&#xff1a;在页面中创建一个按钮&#xff0c;用于触发登录操作。 获取用户授权&#xff1a;当用户点击登录按钮时&#xff0c;调用uni.login或uni.getUserInfo等API获取用户授权。 处理授权回调&#…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...