vue中实现高德地图上打点,并添加点击事件,

2023-11-16

1、在地图上打点,并定义 click 事件

/**
 * 地图上打点,并定义click事件
 * @param map map对象
 * @param imgUrl  图像的url地址
 * @param data 数据信息
 * @param onclick 回调函数
 * @returns {AMap.Marker} 返回一个marker对象
 */
export function createTrafficEventMarker(map, imgUrl, data, onclick) {
    let position = wgs84togcj02(data.lon, data.lat);
    let tmpMap = map
    let lon = position[0]
    let lat = position[1]
    let tmpImgShow = imgUrl + 'event_up.png'

    //事件信息 后续数据 地图打点
    let eventMark = new AMap.Marker({
        map: tmpMap,
        position: [lon, lat],
        anchor: 'center',
        // cursor: 'default',
        zooms: [1, 20],
        extData: {
            eventId: data.eventId
        },
        content: '<div style="display:flex;flex-direction: column;justify-content: center;align-items: center;">' +
            '<div style="background: red;font-size: ' + fontSize.f14 + 'px;width: ' + fontSize.f100 + 'px;display:flex;justify-content: center;align-items: center;border-radius: ' + fontSize.f4 + 'px;">' +
            '<div style="padding: ' + fontSize.f4 + 'px;">' + data.eventName + '</div>' +
            '</div>' +
            '<img style="width: ' + fontSize.f24 + 'px;height: ' + fontSize.f36 + 'px;"  src=' + tmpImgShow + '>' +
            '</div>',
    })
    // 设置marker鼠标为默认箭头样式
    // eventMark.setCursor('default')
    eventMark["layerType"] = 'trafficEvent';
    eventMark.on('click', () => {
        map.setCenter([lon, lat])
        onclick(eventMark)
    })

    return eventMark;
}

2、数据由websocket订阅,后台实时推送

// 初始化所有的生效事件图标
            initValidEventList() {
                getValidEventList({regionId: this.$store.state.region.regionCode}).then(res => {
                    if (res.code === 0) {
                        if (res.data.length > 0) {
                            res.data.forEach(item => {
                                let eventMarker = createTrafficEventMarker(this.map, this.ImgUrl, item, onclick)
                                this.markerList.push(eventMarker)
                            })
                        }
                    }
                })
                // 在此方法内,定义回调函数,进入详情页监听
                window.onclick = (eventMarker) => {
                    if (eventMarker.layerType === 'trafficEvent') {
                        this.$store.state.curClickEventId = eventMarker.getExtData().eventId
                        this.eventDetailVisible = true
                        this.$refs.eventDetailRef.getEventDetail()
                    }
                }
            },

3、实时失效

// 实时失效事件,在地图上消失
            curInvalidEvent(data) {
                let len = data.eventIds.length
                let markerListLen = this.markerList.length
                let listDataLen = this.listData.length
                if (len > 0 && this.markerList.length > 0) {
                    for (let i = 0; i < len; i++) {
                        // 地图上消失已解除状态的图标, 数组删除操作,使用倒序删除
                        for (let j = markerListLen - 1; j >= 0; j--) {
                            if (this.markerList[j].getExtData().eventId === data.eventIds[i]) {
                                this.map.remove(this.markerList[j])
                                this.markerList.splice(j, 1)
                            }
                        }
                        // 修改事件列表中失效书的状态为 已解除
                        for (let k = 0; k < listDataLen; k++) {
                            if (this.listData[k].eventId === data.eventIds[i]) {
                                this.listData[k].eventState = 1
                            }
                        }
                    }
                }
            },
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue中实现高德地图上打点,并添加点击事件, 的相关文章

  • 如何通过单击图像预览上的“x”从文件输入中删除图像?

    我目前有一个文件输入 一旦用户上传图像 就会显示图像预览 在图像预览上 有一个 x 可以从列表中删除图像预览 单击此 x 后 有什么方法可以从输入中的文件集中删除图像吗
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • Angular 2 链式 Promise 并传递拒绝

    应该是一个简单的问题 但是我找不到有关如何做到这一点的文档 像这样链接一个承诺 Making a promise no problem let promise new Promise resolve reject gt let data d
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • 使用 CryptoJS 更改密钥 [重复]

    这个问题在这里已经有答案了 我正在使用 CryptoJS 来加密和解密文本 在这里 我只是获取消息并显示加密和解密消息 我使用DES算法进行加密和解密 这是我的 HTML 文件
  • 在为 RXJS 可观察量编写测试时,如何避免让调度程序通过我的业务逻辑?

    我发现使某些测试通过的唯一方法是显式地将调度程序传递给函数 为了便于说明 请考虑以下函数 function doStuff stream return stream delay 100 filter x gt x 2 0 map x gt
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • vue-test-utils:如何测试 Mounted() 生命周期挂钩中的逻辑(使用 vuex)?

    我正在尝试为 Vue 中的逻辑编写一个单元测试mounted 生命周期钩子 但运气不太好 问题似乎是这样的mounted 使用 vue test utils 安装组件时永远不会被调用mount 这是我要测试的 Vue 组件
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • 如果数字小于 10,则显示前导零 [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 相当于 printf string format https stackoverflow com questions 610406 javascript equivalent t
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • 小白上路~ element-vue 根据用户角色改变左侧导航栏

    使用 Element UI 做左侧导航栏时 可以让后台管理端的功能模块一目了然 但是管理员角色不止一种怎么办 难道我要写很多个代码类似的后台管理系统吗 答案当然是 不 跟着我来做一个可以根据角色来显示不同导航栏的后台管理系统吧 1 数据库表
  • Microsoft Edge安装

    Windows10 ltsc 安装Edge 联网安装 下载地址可以百度搜索edge 官网下载地址为 https www microsoft com zh cn edge 这只是个安装程序 打开后会下载真正的浏览器程序并安装 离线下载地址 在
  • SpringCloud开启熔断Hystrix相关注解@EnableCircuitBreaker/@SpringCloudApplication/@EnableHystrix

    很多视频教程和学习资料都是用的老版本来教学 因为互联网更新迭代太快 在这记录一下靠前版本所用 依赖 服务提供者
  • 后端如何解决跨域问题

    为什么会产生跨域 同一协议 http https 同一ip 同一端口 8080 8081 三同中有一个不同就产生了跨域 后端如何解决跨域问题 方法一 新建跨域配置文件 Configuration public class CorsConfi
  • OpenART mini 控制舵机

    OpenART mini 控制舵机 基本介绍 舵机的分类 代码呈现 PWM控制 PWM py 单个舵机代码 运行结果 整合代码 运行结果 两个舵机 代码 项目效果呈现 基本介绍 最近在做智能车 用的语言是python 做识别动物水果数字等
  • microsoft runtime dll_完美解决api-ms-win-crt-runtime-l1-1-0.dll 丢失问题

    病状 win8 win7系统经常出现软件不运行 提示 api ms win crt runtime l1 1 0 dll 丢失 下载安装即可解决
  • 服务器memcache清理缓存的方法

    首先打开cmd窗口 输入一下命令清除memcached缓存 1 连接 telnet 127 0 0 1 11214 2 查看状态 stats 3 清除缓存 flush all 显示ok以后 缓存就清理成功啦 4 退出memcache qui
  • 【CentOS7离线ansible-playbook自动化安装CDH5.16(内附离线安装包地址,及自动化脚本)】

    CentOS7 离线环境 使用ansible自动部署CDH5 16 前言 本文介绍如何使用作者开发的自动化脚本 离线部署cdh集群 只需要简单的配置下yum源和cdh集群节点IP等几个参数 就可实现一键部署cdh集群 省去配置mysql n
  • 内存颗粒和闪存颗粒的区别_NAND Flash闪存颗粒与SSD知识深度解析

    谈闪存 须从Wafer开始 Wafer即晶圆 是半导体组件 晶片 或 芯片 的基材 从沙子里面高温拉伸生长出来的高纯度硅晶体柱 Crystal Ingot 上切下来的圆形薄片称为 晶圆 采用精密 光罩 通过感光制程得到所需的 光阻 再对硅材
  • Android开发之EditText 详解(addTextChangedListener监听用户输入状态)

    为了实现像qq或者微信输入框的效果 当在EditText输入字符串时发送按钮显示 当输入框字符消除掉时按钮改变 所以这时候我就要用到addTextChangedListener 用它来监听用户输入状态 可以在监听中改变用户输入的内容或者提示
  • python读取和生成excel文件

    今天来看一下如何使用python处理excel文件 处理excel文件是在工作中经常用到的 python为我们考虑到了这一点 python中本身就自带csv模块 今天来看一下如何使用python处理excel文件 处理excel文件是在工作
  • 对象池(连接池):commons-pool2源码解析:GenericObjectPool的继承结构、构造方法

    概述 GenericObjectPool是apache commons pool 源码分析基于commons pool2 框架中的一个非常重要的类 解析GenericObjectPool就有必要先了解一下apache commons poo
  • 图文并茂开发AR小游戏全教程(二)

    需要识别卡 AR游戏 这个是不需要识别卡的 可放大缩小 旋转 感应重力偏移 可自行下载项目运行到真机上演示由于项目以及下文用到的素材较大 GItHub 无法上传 故传到百度云LLGameAR二 1 创建一个新场景 然后将新的场景保存成 Sc
  • 内网穿透——SSH远程连接树莓派

    前言 文章目录 前言 内网穿透实现公网SSH远程连接树莓派 1 在树莓派上安装 cpolar客户端 https www cpolar com 2 在树莓派浏览器中输入本地9200端口 3 在公共互联网的电脑的命令行界面输入命令 内网穿透实现
  • Python注释方式有哪些

    注释是对一段代码的解释和说明 可提高程序代码的可读性 让人们能够更加轻松地了解代码 尤其在大型项目开发和团队项目中 注释是必不可少的 任何编程语言都少不了注释 Python也不例外 以下是Python注释的具体用法 1 单行注释 Pytho
  • 抖音矩阵号系统搭建,企业同时管理1000+账号的基础逻辑

    短视频矩阵号系统开发功能涵盖 1 AI视频剪辑 2 创意灵感 3 多账号矩阵管理 4 视频排名优化 5 视频投放 6 企业号智能营销 6 AI视频拓客 7 企业员工管理等 开发思维导图如下 源码开发所需服务器配置 及环境 1 规格 最低4核
  • qt day1

    实现图形化登录界面 include myhomework h include
  • CUDA 动态链接库与静态链接库

    参考 CUDA C BEST PRACTICES GUIDE chapter 15 PREPARING FOR DEPLOYMENT 关于部署CUDA加速的程序时 往往对CUDA加速的程序编译为动态链接库或者静态链接库 这两者导致的区别是
  • python 8行代码搞定 AES加解密

    python 实现AES加解密相关的知识 可以参考以下文章 python实现AES加密解密 但该文章中 对于加密前数据的补全 及解密后去掉多余数据 由作者自己进行了封装 导致代码较为复杂 实际可以使用库中pad和unpad来解决该问题 而使
  • vue中实现高德地图上打点,并添加点击事件,

    文章目录 1 在地图上打点 并定义 click 事件 2 数据由websocket订阅 后台实时推送 3 实时失效 1 在地图上打点 并定义 click 事件 地图上打点 并定义click事件 param map map对象 param i